一个http处理工具

紧接着上一篇文章,上篇文章发起了http请求,这篇文章来说说http请求结果的处理吧,

还是先看看类图吧:


说说这些类干什么的了

HtmlRequestInfo 是RequestInfo的子类 主要是在爬网是需要一些特殊的信息。

ProcessBase 是处理http返回结果的基类,ProcessHtml 是一个典型的爬虫 ,ProcessJS 处理返回结果中的js,ProcessImage处理图片流

FilterBase 主要用来抓取url链接 FilterHtml用来抓取页面中的页面链接url,FilterImage 抓取图片的url  FilterJs抓取js的url

LogBase 是用来记录日志的 LogText 以文本的形式写log

MessageBase 是ProcessBase 之间通信的桥梁,MSMQMessage 实现了该接口。

还是来说说大致的流程吧

这个ProcessBase的子类扮演者相同的角色,为了便于实施分布式不部署,Process之间默认采用消息队列来通信。

ProcessHtml 的地位应该比较基础,主要用于爬网,默认情况它把StartUrl的地址作为爬虫的开始地址,改url返回的内容中究竟要取那些url连接者是有ProcessHtml的Filers属性来决定的,看看Filers的定义大家就很清楚了

        static ConcurrentDictionary<FilterBase, bool> _filters;
        public ConcurrentDictionary<FilterBase, bool> Filers
        {
            set { _filters = value; }
            get { return _filters; }
        }

每一个FilterBase都会返回特定的url字符数组。

如:

 <HttpTasks>
    <add key="ProcessRequest.ProcessHtml, ProcessRequest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" value="True"/>
    <add key="ProcessRequest.ProcessJS, ProcessRequest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" value="False"/>
    <add key="ProcessRequest.ProcessImage, ProcessRequest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" value="False"/>
  </HttpTasks>

这里有3个FilterBase,value表示当前process是否处理,为false则放到特定的队列中,有其他的process来处理。

具体的细节我就不说了,大家请下载源代码吧 http://download.csdn.net/detail/dz45693/4177053

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值