查看文章
 
PHP基于Dom方式的网页采集的实现
2009年02月24日 星期二 10:14 A.M.

写了好几个版本的采集,都有这个那个问题,并且采集规则的设置基本都差不多。

在探索新的方式的采集规则设置的时候,随口和Loning问了句,他回:我现在不用正则采集了,用dom。

但他用的都是net的,在或许的心里下,soso了php的dom,结果还真给找出来了个,叫:phpQuery。

用过jQuery的人都知道,jQuery的选择器很强大,这个phpQuery和jQuery如出一辙,选择功能可以说完全一样。

从SVN下了个最新的0.9.5版本,简单写了个测试代码:

require('phpQuery/phpQuery.php');

$s=file_get_contents('http://tech.163.com/digi/09/0223/19/52S47HNQ001624J2.html');
$doc=phpQuery::newDocumentHTML($s);
echo '标题:'.$doc['html>body>div.endArea>div.col1>div#endMain>div.theTitle>h1#endTitle']->text();
echo '<br/>来源:'.$doc['html>body>div.endArea>div.col1>div#endMain>div.theTitle>div.text>a:first']->text();

果然不错,直接输出我想要的标题和来源。

其实对于最终用户来说,最难的就是写
html>body>div.endArea>div.col1>div#endMain>div.theTitle>h1#endTitle
这部分代码,其实它写起来相当简单,用IE的WebDeveloper或Firefox的FireBug,点击查看就可以网页中拾取标签对象及完整路径。

这远远比打开源代码,分析源码简单很多,效率更高,当然更无需分析源代码。

在采集设置上做适当的界面优化,完全可以弄成“傻瓜化”的采集程序。

只不过……

这phpQuery也太恐怖了点,导出来的干净代码竟然有20mb..简直是庞然大物。

或许,你会问我,KingCMS的php版会不会用它做采集模块?答案是……

看这文章所属列表就知道了...


类别:kingcms.php||添加到搜藏 |分享到i贴吧|浏览(762)|评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu