页面上有三种形式。所有表单的日期范围都默认为“今天”。每个表单都使用一个范围内的日期(例如 2013 年 1 月 1 日 - 2013 年 1 月 3 日)迭代提交,然后抓取结果表。
然后脚本将日期提交到下一个表单,然后再次抓取该表。但是,抓取是在提交日期之前发生的。
我尝试sleep 2
在刮擦之间添加无济于事。
页面上有三种形式。所有表单的日期范围都默认为“今天”。每个表单都使用一个范围内的日期(例如 2013 年 1 月 1 日 - 2013 年 1 月 3 日)迭代提交,然后抓取结果表。
然后脚本将日期提交到下一个表单,然后再次抓取该表。但是,抓取是在提交日期之前发生的。
我尝试sleep 2
在刮擦之间添加无济于事。
该脚本似乎假设 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