加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

运用PHP制作简单的内容采集器

发布时间:2022-03-10 20:06:22 所属栏目:PHP教程 来源:互联网
导读:采集器,通常又叫小偷程序,主要是用来抓取别人网页内容的。关于采集器的制作,其实并不难,就是远程打开要采集的网页,然后用正则表达式将需要的内容匹配出来,只要稍微有点正则表达式的基础,都能做出自己的采集器来的。 前几天做了个小说连载的程序,因
  采集器,通常又叫小偷程序,主要是用来抓取别人网页内容的。关于采集器的制作,其实并不难,就是远程打开要采集的网页,然后用正则表达式将需要的内容匹配出来,只要稍微有点正则表达式的基础,都能做出自己的采集器来的。
 
  前几天做了个小说连载的程序,因为怕更新麻烦,顺带就写了个采集器,采集八路中文网的,功能比较简单,不能自定义规则,不过大概思路都在里面了,自定义规则可以自己来扩展。
  
  下面就一步一步来讲功能实现。
 
  因为是采集小说,所以首先要将书名、作者、类型这三个提取出来,别的信息可根据需要提取。
 
  这里以《回到明朝当王爷》为目标,先打开书目页,链接:http://www.86zw.com/Book/3727/Index.aspx
 
  多打开几本书会发现,书名的基本格式是:http://www.86zw.com/Book/书号/Index.aspx,于是我们可以做一个开始页,定义一个<input type=text name=number>,用来输入需要采集的书号,以后就可以通过$_POST[‘number’]这种格式来接收需要采集的书号了。接收到书号,下面要做的就是构造书目页:$url=http://www.86zw.com/Book/$_POST[‘number’]/Index.aspx,当然这里是举个例子,主要是为了讲解方便,实际制作的时候最好检查一下$_POST[‘number’]的合法性。
  
  [复制PHP代码] [ - ]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]就是我们要找的分类号了。接下来就是构造章节列表的地址了:$chapterurl = http://www.86zw.com/Html/Book/.$typeid[0]/$_POST[‘number’]/List.shtm。有了这个就能找到每一章节的地址了。方法如下:
  以下为引用的内容:
  $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);
  $count = 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数组就是所有的章节地址了,到这里,采集器就完成一半了,剩下的就是循环打开每个章节地址,读取,然后将内容匹配出来。这个比较简单,这里就不详细叙述了。好了,今天就先写到这吧,第一次写这么长的文章,语言组织方面难免有问题,还请大家多包涵!

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读