页面上有三种形式。所有表单的日期范围默认为“今天”。每个表单都会使用范围中的日期(例如2013年1月1日 - 2013年1月3日)进行迭代提交,并且会删除生成的表格。
然后脚本将日期提交到下一个表单中,然后再次删除该表。但是,在提交日期之前进行了抓取。
我尝试在刮擦之间添加sleep 2
无效。
答案 0 :(得分:3)
该脚本似乎假设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