最近经常需要采集一些网上的数据,发现一个PHP处理HTML的利器 simple html dom,官方网址是http://simplehtmldom.sourceforge.net/
看了一下文档,使用非常方便,关键是能够用CSS选择器来访问DOM树,和jquery相似,实在是难得的利器
以下是一个测试代码,用于抓取大众点评网上的咖啡分类的所有店铺:
程序:
<?php require_once("simple_html_dom.php"); ini_set('memory_limit','1000M'); ini_set("max_execution_time",6000000); for($i=1;$i<=21;$i++){ $html = file_get_html("http://www.dianping.com/search/category/17/30/g1498p$i/g30g1498"); $as = $html->find('.shopname a'); $sum = 0; foreach($as as $a) { if($a->plaintext != "分店"){ $a->href = "http://www.dianping.com".$a->href; echo $a->outertext."------".$a->href."-------<br>"; $sum++; } } echo "<br><br>第 {$i} 页结束 ,数目:{$sum}<hr>"; } ?>
数据采集结果,共采集了21页的数据
另外,还有一个更强大的PHP处理HTML的利器,号称和jquery更相似,并且比simplehtmldom强大,但是难学,叫做 phpquery,地址是:http://code.google.com/p/phpquery/
不错。更常用的xml解析方法是xpath(具有语法通用性,各种语言基本都提供了xpath相应的库)。
PHP SimpleXML 函数中就提供了xpath。