rq204 发表于 2010-1-21 14:41:59

新版插件使用教程(内测版)

火车采集器2010版增加了插件的使用.用户可以在多个地方使用插件来进行扩展开发.目前插件的使用有如下几个地方

插件的执行是这样的,比如默认页的采集,采集器先获取到网页源码,然后将网页源码交给插件,插件处理完成后,再将数据交给采集器,采集器这时再对插件处理过的数据进行分析处理.提取标签,下载图片等.

我以一个默认页的示例说明一下如何使用PHP插件.我们以采http://post.weiqi.tom.com/D5000FEF139.html的分页为例.
我们先看一下,这个分页里是用脚本控制生成的.采集器无法接获取的.其中,生成分页的代码有这一段.
//去到第几页
function goto_page(pageno){
pageno = parseInt(pageno);

if((pageno < 1) || (pageno > 9)){
//加入 forward_link;
if(''.blank()){
return false;
}else{
window.location.href = '';
return false;
}
}

window.location.href = '/D5000FEF139_'+pageno+'.html';
return false;

}

这时有一个数字9,代码有多少个分页.而分页的格式为 '/D5000FEF139_'+pageno+'.html';
这时,我们要用插件来生成分页代码,采集器将识别这个代码并获取到分页.怎么来生成分页呢?

很简单,插件首先是获取了当前默认页的地址,如http://post.weiqi.tom.com/D5000FEF139.html ,而分页的规则是在.html前加_2,_3等.我们就可以直接用循环和替换生成分页代码了.我写的代码如下.


<?php
if($LabelArray['Html']!=""&&$LabelArray['PageType']=='Content')
{
$html=$LabelArray['Html'];
preg_match("/\(pageno > (\d+)\)/i",$html, $matches);
$pagenum=$matches;
if($pagenum>2)
{
   $return="<locoypages>";
   for($i=2;$i<=$pagenum;$i++)
   {
    $url=str_replace(".html",'_'.$i.'.html',$LabelUrl);
    $return.="<a href='".$url."'></a>";
   }
   $return.='</locoypages>';
   $LabelArray['Html'].=$return;
}
}
echo serialize($LabelArray);
?>

首先,需要注意的是,保存网页源码的是 $LabelArray['Html'] .保存网页类型的是$LabelArray['PageType'].这几个参数在采网址,采内容,采多页处是一样的.我们使用插件测试管理器.得到如下结果.



看采集器里的设置



这样,我们就通过插件改变程序的源代码,从而实现了采集脚本多页的功能.

注意,使用测试版的用户,在当前时间下载前的,请再下载最新版进行测试.

zjyk1984 发表于 2010-1-21 15:23:14

看了一下,有点明白,又有点不明白,最好能多加点注释{:4_180:}

aven 发表于 2010-1-21 16:29:41

不错有这个标签可以做更多的事

583558386 发表于 2010-1-22 12:52:28

能下载论坛附件本地吗

liuxing8z 发表于 2010-1-24 20:21:39

{:4_180:}{:4_180:}

tianciyz 发表于 2010-2-24 20:18:45

ali84ls不错 我喜欢

2001121236 发表于 2010-2-26 17:15:05

回复 1# rq204


    高人啊~
膜拜。。。。。

will 发表于 2010-3-4 08:53:21

处理过程多了会不会影响采集的速度呀?

都市乞丐 发表于 2010-3-4 09:07:02

很不错!!!!不过是不是 免费版还是继续不支持 插件使用呢ali76ls

mlmei 发表于 2010-3-23 17:25:56

能有个 视频教程就更好了
页: [1] 2
查看完整版本: 新版插件使用教程(内测版)