2011-12-18 6 views
0

私は掻き出したいウェブサイト(FWIWはsvpplyです)があり、「すべて表示」と表示されるボタンがあります。これはHTML <button>要素です。 Rubyを使ってこのボタンをエミュレートし、そのボタンがクリックされた後に表示される全ページの内容を取得する方法はありますか?Ruby内で<button>をエミュレートするRuby

+2

ボタンの機能によって異なります。それはJavaScriptを実行しますか?フォーム内にある場合は、フォームのアクションを共有します。 – FakeRainBrigand

答えて

1

「すべて表示」ボタンは、JavaScriptのajaxリクエストをトリガーします。それを自動化する唯一の方法は、javascriptを実行できるライブラリを使用することです。 MechanizeやScrAPIなどのライブラリは動作しません。

watirやセレンのような実際のブラウザを駆動するツールが有効です。 watir-webドライバをインストールし、ボタンをクリックして追加の製品を表示することに成功しました。

require 'watir-webdriver' 

b = Watir::Browser.new 
b.goto 'svpply.com/editors_pick' 

#count products 
puts b.elements(:xpath => '//li[@data-class="Product"]').count 
#=> 30 

#Now click button 
show_all = b.button(:id => "btn_all") 
show_all.click 
sleep 4 

#count products again 
puts b.elements(:xpath => '//li[@data-class="Product"]').count 
#=>60 
0

ボタンを押したときにページがリロードされた場合は、そうでなければJavaScriptを解析できるものが必要です。ボタンを押した後にウェブサイトがリダイレクトされる場所を理解していれば(同じページであっても、いくつかのパラメータが設定されている場合は、この目的のためにfirebugを使用してください)、最終的に必要なものを読むことができます。

1

Mechanizeこれをうまく実行できます。

+0

これはjavascript ajaxリクエストを起動する指定のボタンでは機能しません。 –