使用PHP cURL和XPath进行刮擦,如何加快速度?

时间:2011-07-24 23:11:26

标签: php xpath curl screen-scraping

目前我正在使用PHP cURL和XPath,但速度非常慢。

每个网站都有许多使用Javascript的子页面。

一个网站会说30种产品,每个类别有70个子页面,每个10个项目。

我总共抽了大约150个网页。

一个脚本占用一个网站,并从该页面中删除所有网址。与此同时,另一个脚本也在运行。

每个脚本获取一个URL,将数据提取到变量中,然后使用XPath进行抓取,然后将值存储在数据库中。

许多页面使用Javascript和Microsoft ASP.NET Viewstate,因此需要执行许多循环才能从第1页跳到第2页等。

一个脚本可能会运行大约2个小时从一个网站获取所有内容。

可以做些什么来加快速度?

我一直在考虑做与上面相同的事情,但只是先在本地存储每个页面,然后当存储来自单个网站的每个页面然后刮掉它们。

任何人都有很好的经验吗? Javascript / viewstate必须考虑在内,所以我不能先把所有东西都弄清楚。

1 个答案:

答案 0 :(得分:0)

您可以使用mutli-curl一次获取多个页面。如果您愿意,可以在一个mutli-curl请求中请求所有30个类别页面。要处理每个页面,您可以使用分叉(pctl_fork)。结合这两种技术,您的计算机CPU /网络可能成为瓶颈。