我正在试图弄清楚如何捕获完全渲染的页面并对其进行操作。我一直在使用Nokogiri,Hpricot,Mechanize等,但是没有人可以捕获一个页面,其元素由AJAX或事后其他东西呈现。
一个例子是Twitter的状态页面,这是我遇到的很多项目之一,我遇到了麻烦:
http://twitter.com/#!/nytimes/status/42341419062525952
或
http://twitter.com/#!/alleyinsider/status/42337897038364672
如果您查看HTML源代码,它主要是javascript,以后会显示。在Firebug或其他控制台中检查它,您会看到完全渲染的结果,但我不知道如何使用上述工具捕获它。我错过了什么吗?
顺便说一句:是的,我知道有一个Twitter API。但这更像是一个理论问题,因为我在其他一些网站上有不同程度的影响。谢谢!
答案 0 :(得分:5)
... none无法捕获其元素由AJAX或事后其他内容呈现的页面。
这是正确的。您搜索的内容在捕获时不存在于文档中,它是由浏览器处理JavaScript而插入的,JavaScript通过AJAX请求内容并将其插入到页面中。
因此,要想到达目的地,您需要一个JavaScript解释器或代码控制下的浏览器。
Watir项目能够做到这一点。它就像是Mechanize之上的下一步,除了不是Ruby代码,它是一个浏览器被告知你的Ruby代码要做什么。因此,浏览器应该能够加载页面,处理JavaScript,然后拉入您正在寻找的内容。
不同浏览器有variations on Watir,因此您可以使用IE,Safari,Firefox等。
答案 1 :(得分:0)
你试过WebDriver吗?它在浏览器(真实或虚拟)中加载整个页面,您可以浏览页面的DOM,如果要修改页面,可以将javascript命令传递给它。
答案 2 :(得分:0)
我认为如果你试图通过Ajax检索的数据是那么,如果可能的话,你最好把目光瞄准那里。
除此之外,API的帮助很大(正如你所提到的)。有趣的是,看起来这就是Twitter网站的工作原理like your example。
答案 3 :(得分:0)
我自己一直在做一个抓取项目,并且一直在使用Celerity取得了相当不错的成功。以下是一些应该有用的资源。第二个链接专门针对Ajax。
使用入门:Celerity - Wiki Getting Started
特定于Ajax:Celerity - Wiki (Ajax)
祝你好运。答案 4 :(得分:0)
如果您是runnign java,您可能需要查看 lobo browser ,您可以通过代码实例化并呈现页面。 http://lobobrowser.org/java-browser.jsp。我曾经试过这个,但后来放弃了没有ajax内容的更简单的解决方案。
答案 5 :(得分:0)
您可以使用IRobotSoft网络抓取工具并获取UpdatedPage。请查看以下演示:http://irobotsoft.com/help/
答案 6 :(得分:0)
iMacros非常适合 使用web scraping工具。您可以在IE,Firefox和Chrome中运行抓取代码。有免费和商业版本。我喜欢它适用于任何类型的网站,甚至Flash小程序。