Ruby 模拟HTML<;按钮>;压入红宝石

Ruby 模拟HTML<;按钮>;压入红宝石,ruby,web,web-scraping,Ruby,Web,Web Scraping,有一个我想浏览的网站(FWIW),有一个按钮有时会显示为“全部显示”,这是一个HTML元素。有没有办法使用Ruby来模拟点击该按钮,并获得点击该按钮后生成的整个页面的内容,因为该按钮会显示更多内容?如果在按下按钮时重新加载页面,则可以,否则需要能够解析javascript的内容。如果您知道在按下按钮后网站会将您重定向到哪里(即使在同一页面上,但设置了一些参数,请使用firebug),您最终可以阅读您需要的内容。可以很好地为您做到这一点。显示全部”按钮会触发javascript ajax请求。实现

有一个我想浏览的网站(FWIW),有一个按钮有时会显示为“全部显示”,这是一个HTML
元素。有没有办法使用Ruby来模拟点击该按钮,并获得点击该按钮后生成的整个页面的内容,因为该按钮会显示更多内容?

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

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

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

有效的工具是驱动实际浏览器的工具,如和selenium。我安装了-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

这取决于按钮的作用。它运行JavaScript吗?如果它在表单中,则共享表单的操作。这在给定的按钮上不起作用,这会启动javascript ajax请求。