用PHP来做采集器的基本格式是什么意思?

优采云 发布时间: 2021-06-09 03:23

  用PHP来做采集器的基本格式是什么意思?

  用PHP制作简单的内容采集器采集器,通常称为小偷程序,主要用于抓取他人网页的内容。关于采集器的制作,其实并不难。就是远程打开需要采集的网页,然后用正则表达式匹配需要的内容。只要你有一点正则表达式基础,就可以让自己的采集器来了。前几天做了一个小说连载程序,因为怕更新麻烦,写了个采集器,采集八路中文网,功能比较简单,不能自定义规则,但是可能想法就在其中。自定义规则可以自行扩展。用PHP做采集器主要使用两个函数:file_get_contents()和preg_match_all()。前者用于远程读取网页内容,但只能在php5以上版本使用。后者是一个常规函数。提取您需要的内容。下面我们一步一步的说一下函数的实现。因为是采集小说,先提取书名、作者、流派,其他信息可以根据需要提取。这里是“回明为王”的目标。首先打开书目页面和链接:再打开几本书,你会发现书名的基本格式是:书号/Index.aspx,所以我们可以做一个起始页,定义一个,用来输入书号需要采集,然后你可以使用格式$_POST['number']来接收需要采集的书号。

  收到书号后,接下来要做的就是构造书目页面:$url=$_POST['number']/Index.aspx,当然这里是一个例子,主要是为了方便说明,最好是实际让它检查$_POST['number']的有效性。构造好URL后,就可以开始采集书信息了。使用file_get_contents()函数打开书目页面:$content=file_get_contents($url),这样就可以读取书目页面的内容了。下一步是匹配书名、作者和类型。我们以书名为例,其他都一样。打开书目页面,查看源文件,找到“回明为王”。这是要提取的书名。提取书名的正则表达式:/(.*?)\/is,使用preg_match_all()函数提取书名:preg_match_all("/(.*?)\/is",$contents,$title ); $title[0][0]的内容就是我们想要的title(preg_match_all函数的用法可以百度查,这里就不详细解释了)。获取图书信息后,下一步就是获取章节内容。获取章节内容,首先要找到每个章节的地址,然后远程打开章节,使用正则规则获取内容,存入库或者直接生成html文件。

  这是章节列表的地址:可以看出这个和参考书目页面是一样的,可以定期找到:分类号/书号/List.shtm。书号已经拿到了。这里的关键是找到类别号。类别编号可以在之前的参考书目页面上找到。提取类别号:preg_match_all("/Html\/Book\/[0-9]{1,}\/[0 -9]{1,}\/List\.shtm/is",$contents,$typeid );这还不够,还需要一个cut函数: [复制PHP代码]] PHP代码如下: function cut($string, $start,$end){ $message purge($start,$string);$消息explode($end,$message[1]);return $message[0];} 其中$string 是要剪切的内容,$start 是开头,$end 是结尾。取出分类号:$start "Html/Book/";$end "List.shtm";$typeid cut($typeid[0][0],$start,$end);$typeid

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线