国产乱人视频免费观看网站,九九精品视频在线观看,九九久re8在线精品视频,日韩久久精品五月综合

<menu id="zjelp"></menu>

    <th id="zjelp"><tbody id="zjelp"><form id="zjelp"></form></tbody></th>
    <small id="zjelp"><menuitem id="zjelp"></menuitem></small>
  • <small id="zjelp"></small>

    <address id="zjelp"></address>
    <address id="zjelp"></address>
    用c#實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲

    用c#實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲

    ID:22020452

    大?。?39.50 KB

    頁數(shù):7頁

    時間:2018-10-26

    用c#實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲_第1頁
    用c#實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲_第2頁
    用c#實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲_第3頁
    用c#實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲_第4頁
    用c#實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲_第5頁
    資源描述:

    《用c#實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

    1、網(wǎng)絡(luò)爬蟲在信息檢索與處理中有很大的作用,是收集網(wǎng)絡(luò)信息的重要工具。接下來就介紹一下爬蟲的簡單實(shí)現(xiàn)。爬蟲的工作流程如下爬蟲自指定的URL地址開始下載網(wǎng)絡(luò)資源,直到該地址和所有子地址的指定資源都下載完畢為止。http://mmm.qqq23.com下面開始逐步分析爬蟲的實(shí)現(xiàn)。?1.待下載集合與已下載集合為了保存需要下載的URL,同時防止重復(fù)下載,我們需要分別用了兩個集合來存放將要下載的URL和已經(jīng)下載的URL。因?yàn)樵诒4鎁RL的同時需要保存與URL相關(guān)的一些其他信息,如深度,所以這里我采用了Dictionary來存放這些U

    2、RL。具體類型是Dictionary其中string是Url字符串,int是該Url相對于基URL的深度。每次開始時都檢查未下載的集合,如果已經(jīng)為空,說明已經(jīng)下載完畢;如果還有URL,那么就取出第一個URL加入到已下載的集合中,并且下載這個URL的資源。?2.HTTP請求和響應(yīng)C#已經(jīng)有封裝好的HTTP請求和響應(yīng)的類HttpWebRequest和HttpWebResponse,所以實(shí)現(xiàn)起來方便不少。為了提高下載的效率,http://www.qqq100.com我們可以用多個請求并發(fā)的方式同時下載

    3、多個URL的資源,一種簡單的做法是采用異步請求的方法??刂撇l(fā)的數(shù)量可以用如下方法實(shí)現(xiàn)1privatevoidDispatchWork()2{3if(_stop)//判斷是否中止下載4{5return;6}7for(inti=0;i<_reqCount;i++)8{9if(!_reqsBusy[i])//判斷此編號的工作實(shí)例是否空閑10{11RequestResource(i);//讓此工作實(shí)例請求資源12}13}14}?由于沒有顯式開新線程,所以用一個工作實(shí)例來表示一個邏輯工作線程1privatebool[]_req

    4、sBusy=null;//每個元素代表一個工作實(shí)例是否正在工作2privateint_reqCount=4;//工作實(shí)例的數(shù)量?每次一個工作實(shí)例完成工作,相應(yīng)的_reqsBusy就設(shè)為false,并調(diào)用DispatchWork,那么DispatchWork就能給空閑的實(shí)例分配新任務(wù)了。??接下來是發(fā)送請求1privatevoidRequestResource(intindex)2{3intdepth;4stringurl="";5try6{7lock(_locker)8{9if(_urlsUnload.Count<=0

    5、)10{11_workingSignals.FinishWorking(index);12return;13}14_reqsBusy[index]=true;15_workingSignals.StartWorking(index);16depth=_urlsUnload.First().Value;17url=_urlsUnload.First().Key;18_urlsLoaded.Add(url,depth);19_urlsUnload.Remove(url);20}2122HttpWebRequestreq=(

    6、HttpWebRequest)WebRequest.Create(url);23req.Method=_method;//請求方法24req.Accept=_accept;//接受的內(nèi)容25req.UserAgent=_userAgent;//用戶代理26RequestStaters=newRequestState(req,url,depth,index);//回調(diào)方法的參數(shù)27varresult=req.BeginGetResponse(newAsyncCallback(ReceivedResource),rs);/

    7、/異步請求28ThreadPool.RegisterWaitForSingleObject(result.AsyncWaitHandle,//注冊超時處理方法29TimeoutCallback,rs,_maxTime,true);30}31catch(WebExceptionwe)32{33MessageBox.Show("RequestResource"+we.Message+url+we.Status);34}35}第26行的請求的額外信息在異步請求的回調(diào)方法作為參數(shù)傳入,之后還會提到。第27行開始異步請求,這里需

    8、要傳入一個回調(diào)方法作為響應(yīng)請求時的處理,同時傳入回調(diào)方法的參數(shù)。第28行給該異步請求注冊一個超時處理方法TimeoutCallback,最大等待時間是_maxTime,且只處理一次超時,并傳入請求的額外信息作為回調(diào)方法的參數(shù)。?RequestState的定義是1classRequestState2{3privateconstint

    當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

    此文檔下載收益歸作者所有

    當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
    溫馨提示:
    1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
    2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
    3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
    4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。