如果所有评论都在不同页面上,如何将它们刮掉?

时间:2018-10-02 08:46:03

标签: ruby web-scraping rubygems nokogiri mechanize

如果它们在不同页面上,如何从沃尔玛评论页面(例如:http://www.walmart.com/ip/Ematic-9-Dual-Screen-Portable-DVD-Player-with-Dual-DVD-Players-ED929D/28806789)中刮取所有评论?我通过机械化(nokogiri)进行了刮擦,但是它无法单击按钮(这不是表格的一部分) ,那么我无法提交)

<button class="paginator-btn paginator-btn-next"><span 
class="visuallyhidden">Next Page</span></button>

我无法进入下一页。如何解决此问题?

2 个答案:

答案 0 :(得分:1)

更新后的答案(问题后编辑):

我认为这可能会更容易。如果您关注产品网址,则会看到网址末尾有某种ID:

  

http://www.walmart.com/ip/Ematic-9-Dual-Screen-Portable-DVD-Player-with-Dual-DVD-Players-ED929D/ 28806789

如果获得该ID,则可以进入评论根页面(https://www.walmart.com/reviews/product/)并合并产品ID:

  

https://www.walmart.com/reviews/product/ 28806789

现在,您可以遍历产品,获取尾随ID,然后转到每个评论页面以获取所有评论。

希望有帮助。

旧答案(问题前编辑):

您发布的页面对我来说是空的。但是,我看到的是该元素是一个按钮,因此,您需要做的是查找表单,然后提交。

摘自Clicking a button with Ruby mechanize的示例(以防链接由于某些原因停止工作):

# get the form
form = agent.page.form_with(:name => "my-form")
# get the button you want from the form
button = form.button_with(:value => "Search")
# submit the form using that button
agent.submit(form, button)

从所述问题中贷记@flaviu和@serabe。

要进行抓取,您应该保存根URL并进入评论页面,获取评论,然后返回根URL,依此类推。

答案 1 :(得分:0)

我用watir gem解决了这个任务。机械化无法与JavaScript交互。