您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 火车采集器插件开发手册
火车采集器插件开发手册1.火车采集器插件使用C#语言开发,用户开发时需要引用Release目录下的super.dll和AppInerFace.dll两个类库即可。开发的插件需要实现ILocoySpider和ISuperJob两个接口,程序在运行时会加载并执行插件程序集中的方法。插件的开发细节请查看开发示例。2.开发插件时需要注意以下几个方法A.程序集的目标Framework为.NetFramework2.0B.程序集的目标平台为x86C.插件开发完成后,除插件文本本身外,其它引用的dll文件需要放在采集器的System目录下。本程序引用的super.dll和AppInerFace.dll文件程序已自带并加密,不需要复制。复制会引起程序运行错误。我们从接口的源码中解析一下插件中需要实现的各个方法和属性的功能和使用的位置:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceLeWell.Api{///summary///火车采集器采网址,保存内容时的插件////summarypublicinterfaceILocoySpider{///summary///是否处理起始网址,如果是,则调用MakeStartAddress方法,对每个起始网址再进行处理////summaryboolUseMakeStartAddress{get;}///summary///对起始网址进行处理,即通过每个起始网址生成一个或多个网址链接,并将最终生成的网址做为起始网址。注意这里的起始网址是采集器对起始规则进行解析后生成的新的起始网址。比如我们从生成的真实的递增网址中再生成新的网址。////summary///paramname=urlData单个的起始网址/param///paramname=useragent浏览器user-agent/param///paramname=refer来源页/param///paramname=cookie网页cookie/param///returns如果UseMakeStartAddress,请直接返回空List或null/returnsListstringMakeStartAddress(stringurlData,stringuseragent,stringrefer,System.Net.CookieCollectioncookie);///summary///在请求多级网址前更改http请求,处理的是多级网址请求时的Request对象,可以修改user-agent,Cookie等属性。可以通过此功能,开发自动登录等功能。////summary///paramname=requesthttp请求对像/paramvoidChangeStepRequest(refSystem.Net.HttpWebRequestrequest);///summary///在多级网址http请求完成后得到的html代码,再用该方法进行处理,处理完的html采集器再去提取下一级的网址或标签。如果不做任何修改,直接返回html.////summary///paramname=pageurl当前页网址/param///paramname=html当前代码/param///paramname=request请求的header/param///paramname=response返回的header/param///returns如果不修改html代码,请直接返回html/returnsstringChangeStepHtml(stringpageurl,stringhtml,System.Net.WebHeaderCollectionrequest,System.Net.WebHeaderCollectionresponse);///summary///是否使用插件来获取多级网址,使用True后默认的提取网址规则将无效,用户需使用GetStepUrls方法获取网址,这个方便用户写插件直接生成网址链接////summaryboolUseGetStepUrls{get;}///summary///当UseGetStepUrls=true时,可以通过该方法获取多级网页地址和自定义标签。注意每个返回结果中的Dictionary中的标签键名和数量要一样////summary///paramname=html网页源代码,是插件处理过的/param///paramname=areaStart网址提取区域开始/param///paramname=areaEnd网址提取区域结束/param///paramname=urlStyle自定义网址规则样式/param///paramname=urlCombine自定义组合网址/param///paramname=allow网址中包含/param///paramname=forbidden网址中不得包含/param///returns多个网址和标签的集合,每个KeyValuePair中包含一个网址,对应的dic是标签,如果UseGetStepUrls是True,直接返回null即可/returnsListKeyValuePairstring,Dictionarystring,stringGetStepUrls(stringhtml,stringareaStart,stringareaEnd,stringurlStyle,stringurlCombine,stringallow,stringforbidden);///summary///对火车采集器最终采集的结果字符串进行再处理,注意这时文件已下载完成,处理完该字符串后,程序会再进行一个包含和不得包含的判断处理,看结果是否需要保留,然后数据将保存到本地数据库或发布。如果您不需要某条记录了,只需要设置该记录不得为空,然后用插件将这个标签的值设置为空,即可以在实际采集中过滤掉这条记录。////summary///paramname=dic/paramvoidChangeResultDic(Dictionarystring,stringdic);///summary///当UseChangeSaveFiles=true时,可以对还没有下载前的文件进行修改,在这里可以修改文件保存的地址和替换地址,也可以修改每个标签的返回值,这个操作在ChangeResultDic方法之前执行。这个功能可以方便我们对下载的文件进行重命名。需要注意的是,修改文件的名称后,标签中的地址也要修改。开发人员要做的,就是修改fieldandfiles和dic。////summary///paramname=fieldandfiles该字段的结构为{标签名,(真实下载地址,[文件保存地址和替换地址])}。注意,这里的真实下载地址不能修改,也不能添加新的下载地址。/param///paramname=dic标签名和html值/paramvoidChangeSaveFiles(Dictionarystring,Dictionarystring,KeyValuePairstring,stringfieldandfiles,Dictionarystring,stringdic);///summary///是否启用修改保存文件,启用户将调用ChangeSaveFiles方法对下载的文件名及标签进行处理////summaryboolUseChangeSaveFiles{get;}///summary///任务完成后在界面上提示什么信息,如果什么也不提示返回null即可。用户可以在该方法中做一些统计,数据清理等工作。////summary///paramname=handstop是否手动停止/param///paramname=jobname任务名/param///paramname=jobid任务id/param///paramname=url采网址成功条数/param///paramname=content采内容成功条数/param///paramname=post发内容成功条数/param///paramname=job任务的变量/param///returns需要在界面上显示的文字,null或空不显示/returnsstringEndJob(boolhandstop,stringjobname,stringjobid,inturl,intcontent,intpost,objectjob);///summary///开始运行任务时在界面上的提示,在该方法中可以做额外的一些检查,并将结果显示在任务运行界面上。////summary///returns需要在界面上显示的字,null或空不显示/returnsstringStartJob();}}usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceLeWell.Api{///summary///采集器采内容使用的插件////summarypublicinterfaceISuperJob:ICloneable,IDisposable{///summary///采内容时是否对http请求进行修改////summaryboolUseChangeWebRequest{get;}///summary///当UseChangeWebRequest=true时,修改采内容时http请求的一些信息。该方法发生在默认页和每个多页,要由level判断当前是哪个页面。////summary///paramname=level当前的层数,从0开始/param///paramname=requesthttp请求/paramvoidChangeWebRequest(intlevel,refSystem.Net.HttpWebRequestrequest);///summary///对每个页面http请求后下载的原始的html代码进行处理,插件对该html代码处理完成后,采集器才使用规则提取功能提取内容。////summary///paramname=level当前的层数,从0开始/param///paramname=originalHtml当前页源代码/param///paramname=request当前源代码对应的http请求header/param///paramname=response当前源代码对应的返回的http请求header/param///paramname=pageurl当前页网址/param///returns如果不需要修改代码,请直接返回originalHtml/returnsstringChangeHtml(intlevel,stringoriginalHtml,System.Net.WebHeaderCollectionrequest,System.Net.WebHeaderCollectionresponse,stringpageurl);///summary///对每一个页面采集的结果进行处理,需要注意的是dic是一个标签名,多个内容,如用户设置了循环采集,这里的list就可能有多个值.////summary///paramname=level当前的多页的层数,从0开始/param///para
本文标题:火车采集器插件开发手册
链接地址:https://www.777doc.com/doc-2298269 .html