火车头目前来说是最NX的一款多功能采集器了,而且开放性很好,提供了PHP插件和C#插件两种,可以让开发人员自行处理数据。
我个人也是刚接触,算是抛砖引玉。
首先编写C#插件需要首先引用两个DLL。分别是System目录下的super.dll,AppInterFace.dll两个火车头自带的DLL文件
ChangeHtml 函数是处理标签之前HTML代码。 因为官方文档颇少,我也只是从此函数入手了。
比如我要处理一段代码,将处理后的代码加上我自己定义的标签。然后在火车头标签处开始和结束分别输入 [item1] , [/item1] 即可获取到我处理后的代码。
最后返回 return originalHtml + "[item1]" + 处理后的代码变量+ "[/item1]";
下面是我抠的一段demo
using System;
using System.Collections.Generic;
using System.Web;
using System.Text;
using System.Text.RegularExpressions;
namespace XyLocoy
{
public class XyLocoy : LeWell.Api.ISuperJob, LeWell.Api.ILocoySpider
{
#region ISuperJob 成员
public void ChangeArticle(int level, Dictionary<string, List<string>> dic, string pageurl, string html)
{
//不操作
}
public string ChangeHtml(int level, string originalHtml, System.Net.WebHeaderCollection request, System.Net.WebHeaderCollection response, string pageurl)
{
这里操作 originalHtml 为未处理过的获取到的html代码
return originalHtml;
}
public void ChangeWebRequest(int level, ref System.Net.HttpWebRequest request)
{
//不操作
}
public string GetMultPageUrl(string multPageName, string pageurl, string html, string multPageStyle, string multPageCombine)
{
return null;
}
public List<string> GetPagesUrl(int level, string pageurl, string html, string pagesStyle, string pagesCombine)
{
return null;
}
public bool UseChangeWebRequest
{
get { return false; }
}
public bool UseGetMultPageUrl
{
get { return false; }
}
public bool UseGetPagesUrl
{
get { return false; }
}
#endregion
#region ICloneable 成员
public object Clone()
{
return this.MemberwiseClone();
}
#endregion
#region IDisposable 成员
public void Dispose()
{
//不操作
}
#endregion
#region ILocoySpider 成员
public void ChangeResultDic(Dictionary<string, string> dic)
{
//无处理
}
public string ChangeStepHtml(string pageurl, string html, System.Net.WebHeaderCollection request, System.Net.WebHeaderCollection response)
{
return html;
}
public void ChangeStepRequest(ref System.Net.HttpWebRequest request)
{
//不处理
}
public List<KeyValuePair<string, Dictionary<string, string>>> GetStepUrls(string html, string areaStart, string areaEnd, string urlStyle, string urlCombine, string allow, string forbidden)
{
return null;
}
public List<string> MakeStartAddress(string urlData, string useragent, string refer, System.Net.CookieCollection cookie)
{
return null;
}
public bool UseGetStepUrls
{
get { return false; }
}
public bool UseMakeStartAddress
{
get { return false; }
}
#endregion
#region ILocoySpider 成员
public void ChangeSaveFiles(Dictionary<string, Dictionary<string, KeyValuePair<string, string>>> fieldandfiles, Dictionary<string, string> dic)
{
}
public string EndJob(bool handstop, string jobname, string jobid, int url, int content, int post, object job)
{
return null;
}
public string StartJob()
{
return null;
}
public bool UseChangeSaveFiles
{
get { return false; }
}
#endregion
}
}