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

それはそれほど悪くはありません。代わりに機械化を使用します。

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 に答える