在我的场景中,我正在抓取一个内容由 javascript 生成的网站。我知道 watir 非常适合我的情况,但众所周知,它往往会增加一些开销并使程序花费更长的时间。
目前我可以使用 Nokogiri 登录并使用用户名/密码发送发布请求,你可以想象这真的很快。成功登录后,我会转到我想要抓取的内容所在的地址,正如我之前所说,这些内容是一些 javascript 处理的结果,所以从这一点来看 Nokogiri 是不好的。
我想要做的是使用 Watir 加载 Nokogiri 已经返回的 html,以便它解析所有 javascript,然后继续抓取生成的 HTML,而不必从一开始就使用 Watir 以减少处理时间。
有没有办法将内容从 html 字符串加载到 Watir 中,以便对其进行处理,而不是调用“goto”方法?
你的问题的直接答案是否定的。 Watir 并不是为了抓取网页而设计的,而是为了测试网页而设计的。测试网页意味着导航到它们并与它们交互。
此外,如果您的 html 解析器不能解决您的问题,那么将文本从该解析器复制到 Watir 也无法解决您的问题。
你可以随时尝试。
require 'open-uri'
require 'nokogiri'
require 'watir'
#previous stuff
`touch temp.html`
File.open("temp.html", "w") {|f| f.write(nokodoc.html)}
b = Watir::Browser.new
b.goto("file://#{Dir.pwd}/temp.html")