基于javascript的网站有何不同?

基于javascript的网站有何不同?,javascript,web-scraping,screen-scraping,Javascript,Web Scraping,Screen Scraping,我正试图抓取一个网站的内容,该网站似乎正在使用javascript或其他技术。我正在使用xpath查找页面上的内容。我可以在浏览器中使用firebug查看内容,但是如果我保存源代码或通过curl/wget下载源代码,页面中的内容就会丢失。这怎么可能 提前感谢一些内容是通过JS动态加载的。您需要以某种方式运行JS,比如在无头浏览器中运行几秒钟,以便加载动态内容。然后运行DOM,类似于jQuery中的.html(),以获取呈现的内容 据我所知,在他们重新编码并将其发送到您的设备之前,这与他们的代理中

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


提前感谢

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

据我所知,在他们重新编码并将其发送到您的设备之前,这与他们的代理中的类似:

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

Opera Mini的条目:

由于资源限制,JavaScript在暂停之前只能在迷你服务器上运行几秒钟

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


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


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

许多框架(如Angular.js和Backbone.js)会使页面的源代码看起来与实际显示的不同。您将希望尝试使用Chrome开发者工具捕获呈现的DOM(我还没有发现Mozilla开发者工具在这方面非常有用)。谢谢,在这种情况下,如何以编程方式获取完整的DOM?