前几天做了个小说连载的程序,因为怕更新麻烦,顺带就写了个采集器,采集八路中文网的,功能比较简单,不能自定义规则,不过大概思路都在里面了,自定义规则可以自己来扩展。用php来做采集器主要用到两个php函数:file_get_contents()和preg_match_all(),前一个是远程读取网页内容的,不过只在php5以上的版本才能用,后一个是正则函数,用来提取需要的内容的。面就一步一步来讲功能实现。因为是采集小说,所以首先要将书名、作者、类型这三个提取出来,别的信息可根据需要提取。这样还不够,还需要一个切取php函数:
function cut($string,$start,$end){ $message = explode($start,$string); $message = explode($end,$message[1]); return $message[0];}其中$string为要被切取的内容,$start为开始的地方,$end为结束的地方。取出分类号: $start = html/book/; $end = list.shtm; $typeid = cut($typeid[0][0],$start,$end); $typeid = explode(/,$typeid);[/php] 这样,$typeid[0]就是我们要找的分类号了。方法如下: $ustart = ; $uend = ; //t表示title的缩写 $tstart = >; $tend = ; //取路径,例如:123.shtm,2342.shtm,233.shtm preg_match_all(/[0-9]{1,}.(shtm)/is,$chapterurl,$url); //取标题,例如:第一章 九世善人 preg_match_all(/a href=[0-9]{1,}.shtm(.*?)/a>/is,$file,$title); $countcountcount = count($url[0]); for($i=0;$i=$count;$i++) { $u = cut($url[0][$i],$ustart,$uend); $t = cut($title[0][$i],$tstart,$tend); $array[$u] = $t; }
$array数组就是所有的章节地址了,到这里,采集器就完成一半了,剩下的就是循环打开每个章节地址,读取,然后将内容匹配出来。这个比较简单,这里就不详细叙述了。好了,今天就先写到这吧,第一次写这么长的文章,语言组织方面难免有问题,还请大家多包涵!
http://www.bkjia.com/phpjc/446461.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/446461.htmltecharticlephp经过长时间的发展,很多用户都很了解php了,我们现在可以利用php函数实现采集器程序。何为采集器,通常又叫小偷程序,主要是用来抓...
