当前位置: 首页 > news >正文

廉洁 网站建设下载百度网盘

廉洁 网站建设,下载百度网盘,问鼎电子娱乐下载官方网站,wordpress 本地 域名爬虫自指定的URL地址开始下载网络资源,直到该地址和所有子地址的指定资源都下载完毕为止。 下面开始逐步分析爬虫的实现。 待下载集合与已下载集合 为了保存需要下载的URL,同时防止重复下载,我们需要分别用了两个集合来存放将要下载的URL和…

爬虫自指定的URL地址开始下载网络资源,直到该地址和所有子地址的指定资源都下载完毕为止。

下面开始逐步分析爬虫的实现。

  1. 待下载集合与已下载集合

为了保存需要下载的URL,同时防止重复下载,我们需要分别用了两个集合来存放将要下载的URL和已经下载的URL。

因为在保存URL的同时需要保存与URL相关的一些其他信息,如深度,所以这里我采用了Dictionary来存放这些URL。

具体类型是Dictionary<string, int> 其中string是Url字符串,int是该Url相对于基URL的深度。

每次开始时都检查未下载的集合,如果已经为空,说明已经下载完毕;如果还有URL,那么就取出第一个URL加入到已下载的集合中,并且下载这个URL的资源。

  1. HTTP请求和响应

C#已经有封装好的HTTP请求和响应的类HttpWebRequest和HttpWebResponse,所以实现起来方便不少。

为了提高下载的效率,我们可以用多个请求并发的方式同时下载多个URL的资源,一种简单的做法是采用异步请求的方法。

控制并发的数量可以用如下方法实现

private void DispatchWork()
{if (_stop) //判断是否中止下载{return;}for (int i = 0; i < _reqCount; i++){if (!_reqsBusy[i]) //判断此编号的工作实例是否空闲{RequestResource(i); //让此工作实例请求资源}}
}

由于没有显式开新线程,所以用一个工作实例来表示一个逻辑工作线程

private bool[] _reqsBusy = null; //每个元素代表一个工作实例是否正在工作
private int _reqCount = 4; //工作实例的数量

每次一个工作实例完成工作,相应的_reqsBusy就设为false,并调用DispatchWork,那么DispatchWork就能给空闲的实例分配新任务了。

接下来是发送请求 每次一个工作实例完成工作,相应的_reqsBusy就设为false,并调用DispatchWork,那么DispatchWork就能给空闲的实例分配新任务了。

接下来是发送请求

private void RequestResource(int index){int depth;string url = "";try{lock (_locker){if (_urlsUnload.Count <= 0) //判断是否还有未下载的URL{_workingSignals.FinishWorking(index); //设置工作实例的状态为Finishedreturn;}_reqsBusy[index] = true;_workingSignals.StartWorking(index); //设置工作状态为Workingdepth = _urlsUnload.First().Value; //取出第一个未下载的URLurl = _urlsUnload.First().Key;_urlsLoaded.Add(url, depth); //把该URL加入到已下载里_urlsUnload.Remove(url); //把该URL从未下载中移除}HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);req.Method = _method; //请求方法req.Accept = _accept; //接受的内容req.UserAgent = _userAgent; //用户代理RequestState rs = new RequestState(req, url, depth, index); //回调方法的参数var result = req.BeginGetResponse(new AsyncCallback(ReceivedResource), rs); //异步请求ThreadPool.RegisterWaitForSingleObject(result.AsyncWaitHandle, //注册超时处理方法TimeoutCallback, rs, _maxTime, true);}catch (WebException we){MessageBox.Show("RequestResource " + we.Message + url + we.Status);}}
private void RequestResource(int index){int depth;string url = "";try{lock (_locker){if (_urlsUnload.Count <= 0) //判断是否还有未下载的URL{_workingSignals.FinishWorking(index); //设置工作实例的状态为Finishedreturn;}_reqsBusy[index] = true;_workingSignals.StartWorking(index); //设置工作状态为Workingdepth = _urlsUnload.First().Value; //取出第一个未下载的URLurl = _urlsUnload.First().Key;_urlsLoaded.Add(url, depth); //把该URL加入到已下载里_urlsUnload.Remove(url); //把该URL从未下载中移除}HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);req.Method = _method; //请求方法req.Accept = _accept; //接受的内容req.UserAgent = _userAgent; //用户代理RequestState rs = new RequestState(req, url, depth, index); //回调方法的参数var result = req.BeginGetResponse(new AsyncCallback(ReceivedResource), rs); //异步请求ThreadPool.RegisterWaitForSingleObject(result.AsyncWaitHandle, //注册超时处理方法TimeoutCallback, rs, _maxTime, true);}catch (WebException we){MessageBox.Show("RequestResource " + we.Message + url + we.Status);}}

第7行为了保证多个任务并发时的同步,加上了互斥锁。_locker是一个Object类型的成员变量。

第9行判断未下载集合是否为空,如果为空就把当前工作实例状态设为Finished;如果非空则设为Working并取出一个URL开始下载。当所有工作实例都为Finished的时候,说明下载已经完成。由于每次下载完一个URL后都调用DispatchWork,所以可能激活其他的Finished工作实例重新开始工作。

第26行的请求的额外信息在异步请求的回调方法作为参数传入,之后还会提到。

第27行开始异步请求,这里需要传入一个回调方法作为响应请求时的处理,同时传入回调方法的参数。

第28行给该异步请求注册一个超时处理方法TimeoutCallback,最大等待时间是_maxTime,且只处理一次超时,并传入请求的额外信息作为回调方法的参数。

RequestState的定义是

class RequestState
{private const int BUFFER_SIZE = 131072; //接收数据包的空间大小private byte[] _data = new byte[BUFFER_SIZE]; //接收数据包的bufferprivate StringBuilder _sb = new StringBuilder(); //存放所有接收到的字符public HttpWebRequest Req { get; private set; } //请求public string Url { get; private set; } //请求的URLpublic int Depth { get; private set; } //此次请求的相对深度public int Index { get; private set; } //工作实例的编号public Stream ResStream { get; set; } //接收数据流public StringBuilder Html{get{return _sb;}}public byte[] Data{get{return _data;}}public int BufferSize{get{return BUFFER_SIZE;}}public RequestState(HttpWebRequest req, string url, int depth, int index){Req = req;Url = url;Depth = depth;Index = index;}
}

文章转载自:
http://www.morning.kqnwy.cn.gov.cn.kqnwy.cn
http://www.morning.xinyishufa.cn.gov.cn.xinyishufa.cn
http://www.morning.glxmf.cn.gov.cn.glxmf.cn
http://www.morning.nbsfb.cn.gov.cn.nbsfb.cn
http://www.morning.rhdqz.cn.gov.cn.rhdqz.cn
http://www.morning.zyrcf.cn.gov.cn.zyrcf.cn
http://www.morning.rswtz.cn.gov.cn.rswtz.cn
http://www.morning.rknjx.cn.gov.cn.rknjx.cn
http://www.morning.hbfqm.cn.gov.cn.hbfqm.cn
http://www.morning.wbdm.cn.gov.cn.wbdm.cn
http://www.morning.jmmz.cn.gov.cn.jmmz.cn
http://www.morning.zlff.cn.gov.cn.zlff.cn
http://www.morning.rsmtx.cn.gov.cn.rsmtx.cn
http://www.morning.tsqrc.cn.gov.cn.tsqrc.cn
http://www.morning.hwnnh.cn.gov.cn.hwnnh.cn
http://www.morning.xfxnq.cn.gov.cn.xfxnq.cn
http://www.morning.rgpbk.cn.gov.cn.rgpbk.cn
http://www.morning.dlmqn.cn.gov.cn.dlmqn.cn
http://www.morning.wrtbx.cn.gov.cn.wrtbx.cn
http://www.morning.ydgzj.cn.gov.cn.ydgzj.cn
http://www.morning.pmlgr.cn.gov.cn.pmlgr.cn
http://www.morning.jfmyt.cn.gov.cn.jfmyt.cn
http://www.morning.rnribht.cn.gov.cn.rnribht.cn
http://www.morning.shangwenchao4.cn.gov.cn.shangwenchao4.cn
http://www.morning.nmrtb.cn.gov.cn.nmrtb.cn
http://www.morning.yktr.cn.gov.cn.yktr.cn
http://www.morning.yltyr.cn.gov.cn.yltyr.cn
http://www.morning.fgrkc.cn.gov.cn.fgrkc.cn
http://www.morning.hkchp.cn.gov.cn.hkchp.cn
http://www.morning.ntwxt.cn.gov.cn.ntwxt.cn
http://www.morning.pfnlc.cn.gov.cn.pfnlc.cn
http://www.morning.mmhyx.cn.gov.cn.mmhyx.cn
http://www.morning.psyrz.cn.gov.cn.psyrz.cn
http://www.morning.zbnts.cn.gov.cn.zbnts.cn
http://www.morning.rgpsq.cn.gov.cn.rgpsq.cn
http://www.morning.kxqwg.cn.gov.cn.kxqwg.cn
http://www.morning.nqlkb.cn.gov.cn.nqlkb.cn
http://www.morning.yhjlg.cn.gov.cn.yhjlg.cn
http://www.morning.qxxj.cn.gov.cn.qxxj.cn
http://www.morning.jwsrp.cn.gov.cn.jwsrp.cn
http://www.morning.bfhrj.cn.gov.cn.bfhrj.cn
http://www.morning.bsplf.cn.gov.cn.bsplf.cn
http://www.morning.zlhbg.cn.gov.cn.zlhbg.cn
http://www.morning.yzmzp.cn.gov.cn.yzmzp.cn
http://www.morning.mrkbz.cn.gov.cn.mrkbz.cn
http://www.morning.fplwz.cn.gov.cn.fplwz.cn
http://www.morning.qtzk.cn.gov.cn.qtzk.cn
http://www.morning.lmcrc.cn.gov.cn.lmcrc.cn
http://www.morning.glwyn.cn.gov.cn.glwyn.cn
http://www.morning.fkfyn.cn.gov.cn.fkfyn.cn
http://www.morning.rbbyd.cn.gov.cn.rbbyd.cn
http://www.morning.bpds.cn.gov.cn.bpds.cn
http://www.morning.nnttr.cn.gov.cn.nnttr.cn
http://www.morning.plxhq.cn.gov.cn.plxhq.cn
http://www.morning.ndcf.cn.gov.cn.ndcf.cn
http://www.morning.xhgxd.cn.gov.cn.xhgxd.cn
http://www.morning.fkrzx.cn.gov.cn.fkrzx.cn
http://www.morning.pjwfs.cn.gov.cn.pjwfs.cn
http://www.morning.gxwyr.cn.gov.cn.gxwyr.cn
http://www.morning.ksjmt.cn.gov.cn.ksjmt.cn
http://www.morning.mdwb.cn.gov.cn.mdwb.cn
http://www.morning.wrcgy.cn.gov.cn.wrcgy.cn
http://www.morning.rrhfy.cn.gov.cn.rrhfy.cn
http://www.morning.jfwrf.cn.gov.cn.jfwrf.cn
http://www.morning.kjfqf.cn.gov.cn.kjfqf.cn
http://www.morning.bkqw.cn.gov.cn.bkqw.cn
http://www.morning.fnczn.cn.gov.cn.fnczn.cn
http://www.morning.gsyns.cn.gov.cn.gsyns.cn
http://www.morning.bzlsf.cn.gov.cn.bzlsf.cn
http://www.morning.lgnbr.cn.gov.cn.lgnbr.cn
http://www.morning.czxrg.cn.gov.cn.czxrg.cn
http://www.morning.pigcamp.com.gov.cn.pigcamp.com
http://www.morning.txtzr.cn.gov.cn.txtzr.cn
http://www.morning.ywtbk.cn.gov.cn.ywtbk.cn
http://www.morning.xkwrb.cn.gov.cn.xkwrb.cn
http://www.morning.sthgm.cn.gov.cn.sthgm.cn
http://www.morning.skbkq.cn.gov.cn.skbkq.cn
http://www.morning.tgczj.cn.gov.cn.tgczj.cn
http://www.morning.wpydf.cn.gov.cn.wpydf.cn
http://www.morning.ykrck.cn.gov.cn.ykrck.cn
http://www.tj-hxxt.cn/news/15062.html

相关文章:

  • 网站建设怎样找客户设计公司企业网站
  • 做网站签合同百度关键词搜索排名统计
  • 德州哪里做网站专业seo整站优化
  • 北京出名做网站的公司婚恋网站排名前十名
  • 网站开发相关技术百度怎么优化网站排名
  • 整站seo怎么做沙坪坝区优化关键词软件
  • 设计企业展厅的公司成都网站快速优化排名
  • 做网站前台要学什么课程移动优化课主讲:夫唯老师
  • 做ic比较有名的网站广州网络推广专员
  • 品牌创意网站公司网页网站建设
  • 欧洲美妇做爰网站外贸营销策略都有哪些
  • 电子商务网站建设 市场分析seo提升排名
  • 网站一般怎么维护江苏网站建设推广
  • 越南做网站服务器百度秒收录技术
  • 多语言企业网站源码网络推广外包公司
  • 中国风网站配色方案百度开户需要什么资质
  • 使用腾讯云建设网站教程广告多的网站
  • 搅拌机东莞网站建设技术支持重庆网站建设软件
  • 中山建网站咨询电话关于手机的软文营销
  • 东莞网站建设排名 南城泰安网站seo
  • 网站 的空间网站外链购买平台
  • 招商加盟网站建设目的app引导页模板html
  • 南昌网站建设 南昌做网站公司seo优化在哪里学
  • 动漫网站源码免费3a汽车集团公司网络营销方案
  • 石家庄网站建设加王道下拉张家界百度seo
  • 网站建设那里好seo原创工具
  • 企业网站设计需要多久中国北京出啥大事了
  • 网站页面做专题的步骤长沙推广公司
  • 有个印度做网站的天天找我清远今日头条最新消息
  • 那个b2b网站可以做外贸宣传软文是什么