采集用python还是火车头_火车采集器V9插件开发手册

本文介绍了火车采集器V9的C#、PHP和Python插件开发,包括原理、开发过程和注意事项。C#插件基于.Net Framework4.0,PHP插件通过命令行调用php.exe,Python插件则处理json数据。开发者可以根据需求选择合适的语言进行插件开发。
摘要由CSDN通过智能技术生成

火车采集器V9插件开发手册

火车采集器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目录为 System\PHP 。

采集器默认的php环境为了减少体积去掉了部分扩展,可能会无法满足用户的需要。这时,您可以更换您自己的php环境。需要注意的是php的工作目录是 System\PHP ,您可以直接将自己的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."\r\n页面类型为:".$LabelArray['PageType']."\r\n接收到的数据是:".$LabelArray['Html'];

}

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

{

$LabelArray['Html']='当前页面的网址为:'.$LabelUrl."\r\n页面类型为:".$LabelArray['PageType']."\r\n接收到的数据是:".$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);

?>

三、Python插件

1. Python插件原理

python插件也是使用命令行的方式,由采集器将内容标签数据json充列化后传给插件,插件再反序列化后再进行处理,处理完成以后再序列化返回给采集程序。

2. 插件开发过程

插件开发需要注意python版本,插件目录中有示例插件,还要注意,要将python.exe加入全局变量,方便采集器调用,不然会提示找不到python.exe。以下是python3.4的默认插件代码。import sys,importlib

from urllib import parse

import json

if len(sys.argv)!= 5:

print(len(sys.argv))

print("命令行参数长度不为5")

sys.exit()

else:

LabelCookie = parse.unquote(sys.argv[1])

LabelUrl = parse.unquote(sys.argv[2])

#PageType为List,Content,Pages分别代表列表页,内容页,多页http请求处理,Save代表内容处理

PageType=sys.argv[3]

SerializerStr = parse.unquote(sys.argv[4])

if (SerializerStr[0:2] != '''{"'''):

file_object = open(SerializerStr)

try:

SerializerStr = file_object.read()

SerializerStr = parse.unquote(SerializerStr)

finally:

file_object.close()

LabelArray = json.loads(SerializerStr)

#以下是用户编写代码区域

if(PageType=="Save"):

if(LabelArray['标题']):

LabelArray['标题']='这是Python插件处理的标题'

else:

LabelArray['Html']='当前页面的网址为:'+ LabelUrl +"\r\n页面类型为:" + PageType + "\r\nCookies数据为:"+LabelCookie+"\r\n接收到的数据是:" + LabelArray['Html']

#以上是用户编写代码区域

LabelArray = json.dumps(LabelArray)

print(LabelArray)

如果你还有其它疑问可以来本站搜索相关问题,这里会有你想要的答案:火车脚本网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值