php file_get_contents - javascript执行后

时间:2012-06-26 18:54:06

标签: php javascript file-get-contents

基本上,我试图用php抓取网页,但是我想在页面上的初始javascript执行后这样做 - 我希望在初始ajax请求之后访问DOM等等...有什么方法可以做到这一点?

2 个答案:

答案 0 :(得分:2)

简答:不。

抓取站点可以为您提供服务器响应的所有HTTP请求(从中获取DOM树的“初始”状态,如果该内容是HTML)。在Javascript修改DOM之后,它无法考虑DOM的“当前”状态。

答案 1 :(得分:0)

我正在修改这个答案,因为现在有几个项目做得很好:

  • PhantomJS是WebKit的无头版本,还有一些有用的包装器,例如CasperJS

  • Zombie.js这是用Javascript(Node.js)编写的jsdom封装器。

您需要编写JavaScript代码才能与这两个项目进行交互。到目前为止,我更喜欢Zombie.js,因为它更容易设置,并且您可以在代码中使用任何Node.js / npm模块。


旧答案:

不,没有办法做到这一点。您必须在PHP中模拟完整的浏览器环境。除了谷歌之外,我不知道有谁在做这种刮刮,而且远非全面。

相反,您应该使用Firebug或其他Web调试工具来查找生成您实际感兴趣的数据的请求(或请求序列)。然后,使用PHP仅执行需要的请求。