高铁采集器php插件开发规范

火车采集器V9版本使用C#语言.Net Framework4.0开发,支持C#,PHP,Python三种类型的插件。各种插件的运行原理和开发方式不同,以下是各插件的原理以及开发方式:

一、C#插件

1.插件原理

C#插件是用户引用开发程序集,实现其中的接口,采集器在运行过程中会调用相关接口实现数据请求,修改等功能。

2. 插件开发过程

使用Visual Studio新建一个项目,使用C#,.Net Framework4.0,并引用采集器System目录下SpiderInterface.dll文件。简单插件可使用采集器中插件管理器CodeEditor.exe直接编写并生成。插件包含三个接口,分别是

2.1 http请求接口IHTTPTamper

该插件可以在http请求之前更改相关请求参数,可修改RequestEntry来实现。

2.2内容处理接口 IResultProcesser

该插件可以修改标签内容

2.3文件下载接口IFileDownloader

该接口可以对文件下载前的http请求进行处理,还可以取消下载。

3. 插件开发注意事项

3.1 附件中SpiderInterface.XML为注释文件,

3.2 SpiderInterface.chm是各个接口的使用说明

3.3 插件开发完成后请复制到Plugins目录下,重新打开采集器即可使用

3.4 插件的测试请使用插件管理器

二、PHP插件

1. 插件原理

通过调用命令行的php.exe,运行interface.php,而该文件引用用户开发的php文件,对采集器最后的标签数据进行处理。V9版本的php目录为 SystemPHP 。

采集器默认的php环境为了减少体积去掉了部分扩展,可能会无法满足用户的需要。这时,您可以更换您自己的php环境。需要注意的是php的工作目录是 SystemPHP ,您可以直接将自己的php环境复制过来。注意的是该目录下的interface.php文件必须要保留。在更换完成后,请检查一下php.ini,看配置中的各种相对目录是否正确。测试无误后就可以使用了。

2. 插件开发过程

PHP插件可以使用插件管理器中直接新建,也可以使用自己擅长的编辑器。最后只要后缀为.php即可。

PHP插件可使用的参数在示例代码中全部可见。示例代码在Plugins中有一份,下边也复制了一份

<?php



error_reporting(E_ERROR | E_WARNING | E_PARSE);



/*



*外部编程接口处理标签内容示范文件



*该文件内自动系统的三个参数$LabelArray ,$LabelUrl



*对任意采集的标签都适用请对标签内容处理后直接将该数组serialize($LabelArray)输出,



*采集器内部即可接收到该标签的内容,对比以前的接口规则,新规则可以实现标签之间的数据调用和处理



*参数说明:



*$LabelArray    -  标签名及标签内容集合 结构如:Array('栏目id' => 2,'出处'=>  '新浪微博','内容'=>'



暴笑短信')  ##



*$LabelUrl      -  当前采集的页面的Url地址



* 特别注意:如果是处理列表页,默认页,多页时会有以下两个标签



$LabelArray['Html']       网页的源代码,没有经过采集器处理的,直接下载后的数据.修改这里的数据,请将新值赋予$LabelArray['Html']



$LabelArray['PageType']   值可能为 List, Content ,Pages, Save 分别代表处理列表页,默认页,多页,保存时



*以上语句建议不更改,以下为用户操作区域  该区域只限对数组值进行操作,不得有打印输出产生,不得直接增加或删除相应标签名



*/



if($LabelArray['PageType']=="List")



{

$LabelArray['Html']='当前页面的网址为:'.$LabelUrl."rn页面类型为:".$LabelArray['PageType']."rn接收到的数据是:".$LabelArray['Html'];



}



else if($LabelArray['PageType']=="Content")



{

$LabelArray['Html']='当前页面的网址为:'.$LabelUrl."rn页面类型为:".$LabelArray['PageType']."rn接收到的数据是:".$LabelArray['Html'];



}



else if($LabelArray['PageType']=="Save")



{

$LabelArray['内容'] = $LabelArray['标题'].$LabelArray['内容'];  //★★★★★★注意这句。V2009SP2版后可实现多标签之间的相互调用★★★★★★



$LabelArray['内容'] = str_replace('旧字符串','新字符串',$LabelArray['内容']); //简单替换一下



$LabelArray['标题'] =  '【给标题标签加个前缀】'.$LabelArray['标题'];



$LabelArray['时间'] =date('Y-m-d H:i:s',time()); //不用标签内容,直接获取time()函数得到的当前时间,用Y-m-d H:i:s格式输出,如2008-05-28 00:12:23



}



//#############以上为用户操作区域#############################################################################################################################



//#############以下语句必须保留,建议不更改###################################################################################################################



//ob_clean();



echo serialize($LabelArray);



?>
本规则仅供学习参考,本站不承担任何法律责任!如有任何疑问可以咨询客服QQ:1932658509
规则网 » 高铁采集器php插件开发规范