javascript - 使用 Ruby on Rails 和 Nokogiri 抓取 JavaScript 加载的 HTML

标签 javascript ruby-on-rails ruby

我正在尝试在网站上抓取产品名称。

我的 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/

相关文章:

ruby - 如何通过 SSH 连接到服务器,然后从那里通过 SFTP 连接到另一台服务器?

Javascript将字符串分成不同的变量

javascript - Google 放置附近搜索() 返回 invalid_request

ruby-on-rails - 如何使用 Minitest 测试 Pundit 政策?

ruby - 多行if else ruby

ruby - rbenv 上的 ruby​​ 3.0.0 在哪里

javascript - Nuxt.js POST 到 asyncData 内的解析服务器会导致跨域错误

javascript - 访问 Json 上的特定数据 - NodeJS

ruby-on-rails - Rails 中 to_json 的默认值为 :include

ruby-on-rails - Devise token auth 无法验证 CSRF token 的真实性