1

页面上有三种形式。所有表单的日期范围都默认为“今天”。每个表单都使用一个范围内的日期(例如 2013 年 1 月 1 日 - 2013 年 1 月 3 日)迭代提交,然后抓取结果表。

然后脚本将日期提交到下一个表单,然后再次抓取该表。但是,抓取是在提交日期之前发生的。

我尝试sleep 2在刮擦之间添加无济于事。

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

4

1 回答 1

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
于 2013-03-25T18:37:34.857 回答