2013-05-16 46 views
0

我想抓取一个网站的内容似乎是在JavaScript或其他技术的工作。我正在使用xpath来查找页面上的内容。我可以在浏览器中看到使用萤火虫的内容,但如果我通过curl/wget保存源代码或下载源代码,内容从页面中丢失。这怎么可能 ?提前基于JavaScript的网站如何不同?

+0

许多框架(如Angular.js和Backbone.js)都会使页面的源看起来与实际显示的不同。您将希望尝试使用Chrome开发人员工具捕获*渲染* DOM(我还没有发现Mozilla开发人员工具在这方面非常有用) –

+0

谢谢,如何在这种情况下以编程方式获得完整的DOM? – ankit

回答

1

一些内容

感谢通过JS动态加载。您需要以某种方式运行JS,例如在像PhantomJS这样的无头浏览器中运行几秒钟以加载动态内容。然后运行DOM,类似于jQuery中的.html()这样做,以获取呈现的内容。

据我所知,这是类似于他们的代理人how Opera Mini does it他们重新编码并将其发送到您的设备之前:

服务器响应发送回正常 - 当这是由接收Opera转码服务器,他们解析标记和样式,执行JavaScript,并将数据转码为Opera二进制标记语言(OBML)。这个OBML数据由Opera Mini在用户设备上逐步加载。

的Opera Mini的入门from Wikipedia

的JavaScript只会暂停前的一对夫妇的小型服务器上运行秒,由于资源的限制。

根据Opera Mini 4的文档,在将页面发送到移动设备之前,其onLoad事件被触发,所有脚本最多允许执行两秒钟。 setInterval和setTimeout函数被禁用,因此在执行之前等待一段时间的脚本根本不会执行。脚本完成或达到超时后,所有脚本都会停止并且页面被压缩并发送到移动设备。

0

通常,页面加载并请求以json或jsonp形式返回的内容(ajax)。这通常是非常方便的,因为json比html更容易解析。

但是,如果您之前没有做过,那么确定如何制作正确的ajax请求可能是一项挑战。

相关问题