2

可能的重复:
制作一个支持 JavaScript 的爬虫

我正在试图弄清楚将什么用作基于 PHP 的网络抓取工具的基础,该网络抓取工具可以处理使用 JavaScript 呈现的页面。除非执行这些页面中的 JS,否则许多网站抓取尝试(至少是我处理的那些)现在都失败了。这些页面不是为了优雅地回退到无脚本实现而构建的。这包括那些大量使用 AJAX 的。

有人会建议从哪里开始开发可以处理现代且严重依赖 JavaScript 的网页的网络爬虫吗?

PHP可以使用的东西是最好的。

4

5 回答 5

3

可以在无头模式下使用 Web 浏览器引擎来加载页面并分析 DOM。一些谷歌搜索指出我在http://phantomjs.org/

于 2012-09-13T21:12:05.827 回答
1

那些使用大量 ajax 的网站,只需调用与页面相同的 url,并在该响应上构建您的网站内容,而不是请求页面。

那些具有大量 document.write 或等效框架的网站,您可能只需使用简单的正则表达式剥离空间或匹配标签或相关内容,然后再次请求负责的脚本而不是请求它的页面......

于 2012-09-13T21:09:45.797 回答
1

You could use Selenium which is a browser automation tool and then use one of the PHP bindings here, here, or here so you can automate Selenium from PHP.

于 2012-09-13T21:14:07.770 回答
0

您必须在 PHP 中有一个 JavaScript 引擎。或者命令行上的一些无头 Webkit。即便如此,它也会变得非常复杂。所以简短的回答是:不,对不起,你不能那样做。

于 2012-09-13T21:11:29.803 回答
0

PHP 支持 V8 引擎,所以我想你可以将 javascript 传递给 V8。不过,这不是一件好事,我会使用其他东西而不是直接 PHP 来做到这一点。

于 2012-09-13T21:12:37.677 回答