基于javascript的网站有何不同?

时间:2013-05-16 20:01:23

标签: javascript web-scraping screen-scraping

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

提前致谢

2 个答案:

答案 0 :(得分:1)

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

据我所知,在重新编码并将其发送到您的设备之前,它与代理中的how Opera Mini does it类似:

  

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

Opera Mini的条目from Wikipedia

  

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

     

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

答案 1 :(得分:0)

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

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