我正在使用 Ruby on Rails 和 Mechanize 库来抓取商店网站。问题是很多时候我无法抓取某些元素。但是,当我在网站上“查看源代码”时,我可以看到这一点。
例如,沃尔玛的类别(在本例中为“健康”)是无法转义的。我相信这是因为它是动态生成的 HTML(例如来自 javascript)。为了抓取这个,我需要一个浏览器来处理网络请求。
http://www.walmart.com/ip/Replacement-Sensor-Module-for-AlcoMate-Prestige-Breathalyzer/10167376
我还在 Amazon EC2 上使用 Linux 计算机。安装用于 UI 抓取的浏览器会很困难。有任何 Rails gem/插件可以帮助我吗?
谢谢大家!!
最佳答案
换句话来说,您的问题是,解析 HTML 文档的 DOM 的简单方法是什么?就像 Web 浏览器一样,然后根据解析的 DOM 执行文档中的 JavaScript?无需运行实际的网络浏览器。
这有点棘手。
但是,一切并没有失去。看看Capybara 。虽然是为验收测试而创建的,但您也可以将其用于文档的一般处理。要执行 JavaScript,您需要使用支持它的驱动程序,并且由于您希望它是“ headless ”(无浏览器 GUI),这可能意味着使用 capybara-webkit , Akephalos或capybara-envjs .
另一个选项可能是 Harmony ,我对此一无所知,只是它似乎做了你想做的事情,但似乎不再被维护,所以 YMMV。
关于html - 最佳网页抓取 Ruby on Rails 库,可处理由 javascript 生成的动态 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8484305/