采集程序(spider)

来源:互联网 发布:php crm客户管理系统 编辑:程序博客网 时间:2024/05/13 09:52

  采集程序(spider)应该主是搜索引擎中的一个主要部份了,当然我们今天说的不是百度,google的spider。

    我以抓取论坛为例给大家大致介绍一下spider的工作原理。

    首先,我们要一个入口url,在百度它们的最早的入口url是什么让我们就不知道啦。以采集论坛为例,这个也可以算是种垂直搜索引擎吧,如qihoo,关于垂直搜索引擎的概念大家可以搜索一下。垂直搜索引擎的入口是需要手动去搜集的,因为电脑不会知道哪个url是论坛,我的做法就是把搜集的url放在一个配置文件里。

    下面我们就要进入到我们需要的页面,这里首先是要到取到它的分页,分析页面的分页html专门写一个正则作为匹配方式。得到所有分页的url。我使用的是取得总页数就好了,然后所有列表页就是加上分页数就好了。这样我们就可以获取到所有列表页的的url的,接着就是循环读取这些列表页了。

    接着就是在列表页中取到所有详细页面的url了,能过与此正则可以取到所有列表url。到此我们就取到了所有我们要的url接着就是抓取详细页面的url的信息了,依然是使用正则,取到我们要的字段内容。一般要在内容前后取比较有标志性的html作为分界符。这样我们就可以取到我们要的字段内容。论坛比较好办就那些信息,也比较有规则,其它行业信息就比较麻烦,如时间,价格等字段需要格式化。

    我们只要把我们抓取到的信息保存到自己的数据库里就好了,如果是搜索引擎肯定还要进行关键字分词索引的工作。这个就比较复杂了。

    在其中还涉及到编码问题,各目标网站的编码可能是不同的,但是抓取过来后要统一转成自己站的编码。

    第一次采集当然是抓取后有页面信息,在后续采集我们只要采集新的页面就好了,如果列表是以时间为排序就比较好办,我们只要记录好最后一次采集的url就好了。如果不是按时间的话就麻烦了,要重新遍逆url再判断是否采集过。

这里说明一下PHP做这个使用到的几个函数,然后这种程序的执行时间比较长,所以要以命令行的方式来执行。再用linux命令天定时执行。

iconv 编码转换函数
file_get_contents 已使读取文件函数,可以直接读取url
preg_match_all 正则解析函数