【问题标题】:Getting Dynamically Generated HTML With Nokogiri/Open URI使用 Nokogiri/Open URI 获取动态生成的 HTML
【发布时间】:2013-07-04 18:48:55
【问题描述】:

我正在尝试通过在 Chrome 中查看其 HTML 并使用 Nokogiri 抓取数据来抓取网站。问题是某些标签是动态生成的,在使用 open-uri 时它们不会出现在 open(url) 请求中。有没有办法“强制”网站动态生成其内容,以便像 open uri 这样的工具读取?

【问题讨论】:

  • 看看mechanize。我认为它可能会做你想做的事。
  • 根据如何此站点生成其内容,您可能需要先执行其 JavaScript。
  • 有时会在复杂的网站中使用机械化。如果 JRuby 是一个选项,而 mechanize 不起作用,我也会看看Celerity
  • 请提供示例网址。
  • 你不能强迫一个网站做它不打算做的任何事情。您可能会通过摆弄用户代理来欺骗它做一些与通常不同的事情,但通常,在处理 JavaScript 内容时,您需要使用类似 Watir 的东西,它可以在下面执行 JavaScript Ruby 的控制。

标签: ruby nokogiri open-uri


【解决方案1】:

如果通过 open-uri 读取它并没有产生您需要的内容,那么很有可能客户端正在使用 Javascript 生成内容。

这可能是个好消息 - 通过检查页面发出的 AJAX 请求,您可能会找到您正在寻找的内容的 JSON 提要,然后您可以直接请求和解析它。这将让您获得您的数据,而无需通过 HTML 进行挖掘 - 方便!

如果由于某种原因这不起作用,您将需要使用某种浏览器打开页面,让它执行其客户端 Javascript,然后将生成的 DOM 转储为 HTML。 PhantomJS 之类的东西是此类工作的绝佳选择。

【讨论】:

  • 提示 #1 为我节省了大量时间。
猜你喜欢
  • 2012-11-27
  • 1970-01-01
  • 2014-04-18
  • 2011-02-04
  • 1970-01-01
  • 2010-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多