|
火车采集器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[1];
- 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'].这几个参数在采网址,采内容,采多页处是一样的.我们使用插件测试管理器.得到如下结果.
看采集器里的设置
这样,我们就通过插件改变程序的源代码,从而实现了采集脚本多页的功能.
注意,使用测试版的用户,在当前时间下载前的,请再下载最新版进行测试. |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?加入会员
x
|