gpt4 book ai didi

ruby-on-rails - 将网页或 nokogiri 文档保存到数据库字段

转载 作者:太空宇宙 更新时间:2023-11-03 17:01:48 25 4
gpt4 key购买 nike

我做了一些搜索,但一无所获。我希望将网页存储到数据库字段,以便稍后查看源代码(我不想保存到文件,因为我在 Heroku 上)。

我试过:Model.create(:text => open(url)
Model.create(:text => Nokogiri::HTML(open(url)))

不过,这两个好像都没有保存页面源码。我假设我在这里错过了一步,但有人可以引导我朝着正确的方向前进吗?

编辑 #1当我在我的 Nokogiri::HTML 文档上尝试 to_s 时,我得到一个空字符串。这是我下面的代码。用户代理较长的原因是 Google 根据用户代理显示不同的结果,而我正在尝试模仿桌面用户代理。
Nokogiri::HTML(open("http://www.google.com/search?aq=f&gcx=c&sourceid=chrome&ie=UTF-8&q=apple", 'User-Agent' => 'Mozilla/5.0 ( Windows NT 6.1) AppleWebKit/535.2(KHTML,如 Gecko)Chrome/15.0.874.121 Safari/535.2'), nil, 'utf-8').to_s

编辑 #2很奇怪。此代码也返回一个空字符串。我和其他一些人核实过,他们没有得到空字符串。
text = open("http://www.google.com/search?aq=f&gcx=c&sourceid=chrome&ie=UTF-8&q=apple", 'User-Agent' => 'Mozilla/5.0 (Windows NT 6.1 ) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2').read

编辑#3我发现我在 Windows 7 上安装的 ruby​​ 一定有问题。我尝试了一个 ubuntu 安装,我在我的 windows 机器上作为访客运行,它按预期工作。从现在开始在 ubuntu 安装上编写代码。

最佳答案

您想在 Nokogiri 中调用 Document 类的 #to_s 方法。你可以这样做:

text = Nokogiri::HTML(open("http://google.com")).to_s
MyModel.create(:text => text)

确保模型中的 text 列是 text 类型。

编辑:因为你不需要 Nokogiri 做任何事情,你可以只使用 open-uri:

require 'open-uri'
text = open("http://www.google.com/search?aq=f&gcx=c&sourceid=chrome&ie=UTF-8&q=apple", 'User-Agent' => 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2').read
MyModel.create(:text => text)

关于ruby-on-rails - 将网页或 nokogiri 文档保存到数据库字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8582376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com