** 温馨提示:如需转载本文,请注明内容出处。**
本文连接:http://www.cnblogs.com/grom/p/8968905.html
接上一篇,在原项目的基础上进行改造,为EntitySpider设置Downloader。
自定义Downloader类:
public class AtzucheDownloader : DotnetSpider.Core.Downloader.BaseDownloader
{
protected override Page DowloadContent(Request request, ISpider spider)
{
var site = spider.Site;
request.Extras = new Dictionary<string, dynamic>();
request.Extras.Add("Date", DateTime.Now.ToString("yyyy-MM-dd"));
Page page = new Page(request);
return new DotnetSpider.Core.Downloader.HttpClientDownloader().Download(request,spider);
}
}
{
protected override Page DowloadContent(Request request, ISpider spider)
{
var site = spider.Site;
request.Extras = new Dictionary<string, dynamic>();
request.Extras.Add("Date", DateTime.Now.ToString("yyyy-MM-dd"));
Page page = new Page(request);
return new DotnetSpider.Core.Downloader.HttpClientDownloader().Download(request,spider);
}
}
注释为:
这里的数据字典可以在选择器中使用SelectorType.Enviroment来使用
如图所示,Url为Request自带Key,Date就是我们上面设置的属性了,通过这种方法,达到了在数据库内插入一列自定义数据,我这里的作用是记录抓取日期。
结果:
来看下Request类
这个是发起请求的信息,也就是说,在这个自定义的Downloader里面,我们可以任意修改定义带{ set; }权限的属性,包括cookie等,来满足我们的需求。