2011-12-18 55 views
0

有一個網站我想刮(FWIW它是svpply),並且有一個按鈕有時會顯示「顯示全部」,它是一個HTML <button>元素。有沒有什麼方法可以使用Ruby來模擬點擊這個按鈕,並獲取點擊該按鈕後得到的整個頁面的內容,因爲按鈕顯示更多的內容?在Ruby中模仿HTML <button>

+2

這取決於按鈕的功能。它運行JavaScript嗎?如果它在表單中,請分享表單的操作。 – FakeRainBrigand 2011-12-18 23:42:59

回答

1

「全部顯示」按鈕會觸發一個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 
0

如果在按下按鈕時重新載入頁面,則可以,否則您需要可以解析javascript的內容。如果您瞭解按鈕後網站重定向的位置(即使在同一頁面上,但設置了一些參數,請使用螢火蟲進行此目的),您最終可以閱讀所需內容。

1

Mechanize可以很好地爲您做到這一點。

+0

這不適用於給定的按鈕,它啓動了javascript ajax請求。 – 2011-12-19 01:58:03