火车采集器插件功能详解

作者:小文 发布于:2010-9-24 11:29 Friday 分类:软件培训

火车采集器2010版增加了多处插件处理点,可以更方便用户的二次开发.

点击查看原图

对于各部分插件的说明及使用方法如下:

1.采网址:

该处的插件可以对1级,2级网址的采集起作用(也就是说0级网址的采集不会使用插件).插件会对火车采集器0级,1级网址请求回来的html代码进行处理,处理完的html代码交给采集器,采集器再进行网址提取和过滤.

需要注意的问题是如果您使用了2级网址采集,在插件处理0级或是1级网址所请求回来的代码时,您需要自己分析请求的网址和内容,从而知道您到底是处理0级还是1级html内容处理.

2.采内容:

该处的插件是采集器将默认页源代码下载完成后,将整个html代码交给插件处理.插件可以对html代码进行添加,删除等操作.比如默认页中有js脚本生成动态网址,您需要多页采集这个动态网址内的内容,则可以写程序生成 多页地址,然后用采集器去获取其中的地址,然后用采集器的多页功能处理.比如有些动态生成的下载地址,您可以写程序生成,然后用采集器获取并下载.

3.采多页:

该处的插件是采集器将多页代码下载完成后,将整个html代码交给插件处理.然后采集器再从处理后的代码中分析获取标签内容,下载文件等操作.

需要注意的一点是,如果有多个多页,每个多页地址采集器都会处理.对于插件如何知道自己在处理哪个多页,请根据传入的网址及内容由开发者写代码判定.

4.保存时:

该处的插件是采集器已完成标签的提取,文件的下载,然后在保存到数据库之前所做的处理.该插件传入的参数和其它三个插件不是,它是一个数组,是标签名对应标签值的组合.用户可以在这里对标签的值进行处理,比如价格的计算,单位的转化.该插件的操作位于火车采集器标签的不符合内容处理前,因此,您也可以设定标签的值为特定的值,从而实现不保存或是删除该记录的功能.如果您设置了数据库中不得有重复记录,也可以使用该插件,实现有不得重复的数据的处理.

 

一个插件可以同时包含其它的页面的代码.如可以有处理列表网址页的代码,也可以有处理保存时的代码.具体的调用请参见开发示例.

 

PHP插件及C#插件的开发非常简单,具体请参见默认的开发示例.在插件管理器中,选择新建插件,即可以看到默认的开发环境及说明.

标签: 插件

评论(3) 引用(0) 浏览(20024)

PHP采网址(列表页处理)插件的开发方法

作者:小文 发布于:2010-9-15 11:12 Wednesday 分类:软件培训

火车采集器中列表页插件是用来处理采网址时采集的网页源代码的.插件可以对源代码进行处理,然后采集器从处理过的代码中分析网址或是采集数据和网址.

点击查看原图

今天我们以采集 http://news.hexun.com/ 的网址为例,比如我们只采集包含有当天日期的网址,比如今天是 2010-09-15,那么只有网址中有这个日期代码的才可以被我们采集到.

我们的处理思路就是用插件提取所有符合条件的网址,然后生成链接地址,那么,最后采集器采集到的网址就是符合条件的网址了.

点击查看原图

具体请看插件代码

<?php
/*
*火车采集器外部编程接口处理标签内容示范文件   
*该文件内自动系统的三个参数$LabelArray $LabelCookie,$LabelUrl
*对任意采集的标签都适用请对标签内容处理后直接将该数组serialize($LabelArray)输出,
*采集器内部即可接收到该标签的内容,对比以前的接口规则,新规则可以实现标签之间的数据调用和处理                                                       
*参数说明:                                                                                                                                           
  *$LabelArray    -  标签名及标签内容集合 结构如:Array('栏目id' => 2,'出处'=>  'www.locoy.com','作者'=>'火车采集器','内容'=>'<center><b>暴笑短信')  ##
  *$LabelCookie   -  对应采集中用到的Cookie值   
  *$LabelUrl      -  当前采集的页面的Url地址
  * 特别注意:如果是处理列表页,默认页,多页时会有以下两个标签
    $LabelArray['Html']       网页的源代码,没有经过采集器处理的,直接下载后的数据.修改这里的数据,请将新值赋予$LabelArray['Html']
    $LabelArray['PageType']   值可能为 List, Pages, Content 分别代表处理列表页,多页,默认页
* @Copyright  Copyright (c) 2005-2010 http://www.locoy.com       
* @Version    LocoySpider 2010 or later               
* @Licence    Support On LocoySpider Standard and Enterprise Edition   
*以上语句建议不更改,以下为用户操作区域  该区域只限对数组值进行操作,不得有打印输出产生,不得直接增加或删除相应标签名
*/
if($LabelArray['Html'])
{
    if($LabelArray['PageType']=='List')
    {
        $urlArr=array();
        $html=$LabelArray['Html'];
        $today=date("Y-m-d",time());
        preg_match_all("/href=\"([^\"]*?\.html)\"/",$html,$mcs);
        //var_dump($mcs);
        if(count($mcs)>0)
        {
            foreach($mcs[1] as $url)
            {
                if(strpos($url,$today)>0) $urlArr[]=$url;
            }
            $LabelArray['Html']='<a href="'.implode('"><a href="',$urlArr).'">';
        }
    }
}
//#############以上为用户操作区域#############################################################################################################################
//#############以下语句必须保留,建议不更改###################################################################################################################
//ob_clean();
echo serialize($LabelArray);
?>

标签: php 插件

评论(6) 引用(0) 浏览(10164)

Powered by emlog