0

我正试图从棕榈滩县治安官办公室的警察记录纸上获取逮捕数据。

我将搜索范围限制在西棕榈滩市,追溯数据(1974 年 10 月 31 日)。

我正在使用火狐。

当我得到结果时,我打开 FireBug,检查 HTML 选项卡,我可以从页面中看到我想要的信息(即被捕者的姓名、逮捕地址、指控等)。

我检查了 Net>>XHR>>Post 选项卡以找到 POST 请求参数,但将其放入我的代码中没有任何作用。我完全是 watir-webdriver 的新手,这可能无济于事。

这是我的代码:

require 'watir-webdriver'
require 'net/http'
require 'uri'

b = Watir::Browser.new
b.goto 'http://www.pbso.org/index.cfm?fa=blotter'
b.text_field(:name => 'start_date').set '01/01/1900'
b.text_field(:name => 'city_name').set 'West Palm Beach'
b.button(:name => 'process').click

有谁知道是否可以获得响应页面 HTML(即包含姓名、地址、犯罪等的 HTML)?

4

2 回答 2

1

如果要获取页面的 HTML,可以执行以下操作:

puts b.html

或者将其限制为包含数据的表的 HTML:

puts b.table(:class, 'contentTxt').html

尽管您必须遍历所有结果页面。所以像这样,请注意您需要等到每次导航后出现结果。

at_end = false
begin
  #Wait until the results appear
  b.table(:class, 'contentTxt').wait_until_present

  #Output the results
  puts b.table(:class, 'contentTxt').html

  #Go to next page if it exists
  if b.link(:text => /Next/, :class => 'contentTxt').exists?
    b.link(:text => /Next/, :class => 'contentTxt').click
  else 
    at_end = true
  end
end until at_end
于 2012-07-12T00:22:55.047 回答
1

那个看起来还不错,我会用 mechanize 代替:

require 'mechanize'
agent = Mechanize.new
form = agent.get('http://www.pbso.org/index.cfm?fa=blotter').forms[0]
form['captcha_id'] = -1

# page 1 of results
page = form.submit

# page 2 of results
form['fromrec'] = form['fromrec'].to_i + 5
page = form.submit

watir-webdriver 和 ajax 更新结果的问题是当曾经存在的 dom 元素突然消失时会出现错误

于 2012-07-12T01:57:07.803 回答