在Ruby </button>中模拟HTML <按钮>按下

时间:2011-12-18 23:39:25

标签: ruby web web-scraping

有一个我想要抓的网站(FWIW它是svpply)并且有一个按钮显示有时会说“全部显示”,它是一个HTML <button>元素。是否有任何方法可以使用Ruby模拟单击此按钮,并获取单击该按钮后生成的整页内容,因为该按钮显示更多内容?

3 个答案:

答案 0 :(得分:1)

Mechanize可以很好地为您做到这一点。

答案 1 :(得分:1)

“全部显示”按钮会触发javascript ajax请求。自动化的唯一方法是使用可以执行javascript的库。像Mechanize和ScrAPI这样的库将不起作用。

哪些工具可以驱动实际的浏览器,例如watir和selenium。我安装了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

答案 2 :(得分:0)

如果在按下按钮时重新加载页面,则可以,否则您需要能够解析javascript的内容。如果您了解网站在按下按钮后重定向的位置(即使在同一页面上但设置了一些参数,请使用firebug),您最终可以阅读所需内容。