在Nokogiri完成抓取之前,Watir-webdriver正在处理脚本



页面上有三个表单。所有表单的日期范围默认为"今天"。每个表单都迭代地提交一个日期范围(例如,1/1/2013 - 1/3/2013),并抓取结果表。

然后脚本将日期提交到下一个表单,再次刮擦表。但是,在提交日期之前就会进行抓取。

我试着在刮痕之间添加sleep 2,但无济于事。

脚本在这里:https://gist.github.com/hnanon/de4801e460a31d93bbdc

脚本似乎假设Nokogiri和Watir将始终保持同步。这是不对的。

当你这样做的时候:

page = Nokogiri::HTML.parse(browser.html)

Nokogiri在该特定时间点获取浏览器的html。如果Watir更改了浏览器(即更改了html), Nokogiri将不会知道它。

每次想用Nokogiri解析html时,都需要使用浏览器的最新html创建一个新的Nokogiri对象。

举例说明:

require 'watir-webdriver'
require 'nokogiri'
b = Watir::Browser.new
b.goto 'www.google.ca'
page = Nokogiri::HTML.parse(b.html)
p page
#=> This will be the Google page
b.goto 'www.yahoo.ca'
p page
#=> This will still be the Google page
page = Nokogiri::HTML.parse(b.html)
p page
#=> This will now be the Yahoo page

相关内容

  • 没有找到相关文章

最新更新