Ruby内のHTML <button>エミュレート

There's a website that I want to scrape (FWIW it's svpply) and there's a button that shows up sometimes saying "Show All", it's an HTML <button> element. Is there any way to use ruby to emulate a click of this button, and get the content of the full page that results after clicking that button, since the button reveals more content?

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

3 答え

Mechanize can do this nicely for you.

1
追加された
これはjavascript ajaxリクエストを起動する指定のボタンでは機能しません。
追加された 著者 Mark Thomas,

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

実際のブラウザを動かすツールは、 watir やセレンなどのツールです。 watir -webdriverをインストールして、ボタンをクリックして追加の製品を表示することに成功しました。

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
1
追加された

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

0
追加された