0

我正在尝试抓取似乎正在使用 javascript 或其他一些技术的网站的内容。我正在使用 xpath 来查找页面上的内容。我可以在浏览器中使用 firebug 查看内容,但如果我保存源代码或通过 curl/wget 下载源代码,则页面中缺少内容。这怎么可能 ?

提前致谢

4

2 回答 2

1

有些内容是通过 JS 动态加载的。您需要以某种方式运行 JS,例如在PhantomJS之类的无头浏览器中运行几秒钟以加载动态内容。然后运行 ​​DOM,类似于.html()jQuery 中的做法,以获取渲染的内容。

据我所知,这类似于Opera Mini在重新编码并将其发送到您的设备之前如何在其代理中执行此操作:

服务器正常发回响应——当 Opera 转码服务器收到此响应时,它们会解析标记和样式,执行 JavaScript,并将数据转码为 Opera 二进制标记语言 (OBML)。此 OBML 数据由 Opera Mini 逐步加载到用户设备上。

Opera Mini来自 Wikipedia的条目:

由于资源限制,JavaScript 在暂停之前只会在 Mini 服务器上运行几秒钟。

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

于 2013-05-16T20:12:30.723 回答
0

通常页面加载然后请求作为 json 或 jsonp 返回的内容 (ajax)。这对于抓取通常非常方便,因为 json 比 html 更容易解析。

但是,如果您以前没有这样做过,那么弄清楚如何发出正确的 ajax 请求可能是一个挑战。

于 2013-05-18T00:52:19.550 回答