我正在尝试在网站上抓取产品名称。
我的 Controller 执行以下操作:
page = Nokogiri::HTML(open(PAGE_URL))
@items_array = page.css("li.item h3")
然后在 View 中将其显示为:
<%= @items_array.each do |item| %>
<%= item.text %><br /><br />
<% end %>
问题是仅加载前 10 个项目的 HTML。其余部分由 JavaScript 生成。我似乎无法弄清楚到底是怎么回事。
任何有关如何抓取其余内容的想法都非常感谢!
最佳答案
这不会起作用。 Nokogiri 无法抓取页面上没有的任何内容,并且就我所看到的(使用浏览器上的“查看源代码”)而言,列表的很大一部分不是 HTML。在这种情况下,如何加载它是无关紧要的(可能使用 JavaScript)。
最好的选择是询问他们是否公开了您可以使用的 API(这将使您的工作更加轻松)。
抓取非常脆弱,因为它取决于页面的确切布局。
关于javascript - 使用 Ruby on Rails 和 Nokogiri 抓取 JavaScript 加载的 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23947544/