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