




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、? 一、 研究所屬范圍分布式網(wǎng)絡爬蟲包含多個爬蟲, 每個爬蟲需要完成的任務和單個的爬行器類似, 它們從互聯(lián) 網(wǎng)上下載網(wǎng)頁,并把網(wǎng)頁保存在本地的磁盤,從中抽取URL并沿著這些 URL 的指向繼續(xù)爬行。由于并行爬行器需要分割下載任務,可能爬蟲會將自己抽取的URL 發(fā)送給其他爬蟲。這些爬蟲可能分布在同一個局域網(wǎng)之中,或者分散在不同的地理位置。根據(jù)爬蟲的分散程度不同,可以把分布式爬行器分成以下兩大類:1、基于局域網(wǎng)分布式網(wǎng)絡爬蟲:這種分布式爬行器的所有爬蟲在同一個局域網(wǎng)里運行,通過高 速的網(wǎng)絡連接相互通信。 這些爬蟲通過同一個網(wǎng)絡去訪問外部互聯(lián)網(wǎng), 下載網(wǎng)頁, 所有的網(wǎng) 絡負載都集中在他們所在的那個局
2、域網(wǎng)的出口上。 由于局域網(wǎng)的帶寬較高, 爬蟲之間的通信 的效率能夠得到保證; 但是網(wǎng)絡出口的總帶寬上限是固定的, 爬蟲的數(shù)量會受到局域網(wǎng)出口 帶寬的限制。2、基于廣域網(wǎng)分布式網(wǎng)絡爬蟲: 當并行爬行器的爬蟲分別運行在不同地理位置 (或網(wǎng)絡位置) , 我們稱這種并行爬行器為分布式爬行器。例如,分布式爬行器的爬蟲可能位于中國,日本, 和美國,分別負責下載這三地的網(wǎng)頁;或者位于CHINANET ,CERNET,CEINET,分別負責下載這三個網(wǎng)絡的中的網(wǎng)頁。分布式爬行器的優(yōu)勢在于可以子在一定程度上分散網(wǎng)絡流量, 減小網(wǎng)絡出口的負載。如果爬蟲分布在不同的地理位置(或網(wǎng)絡位置), 需要間隔多長時間 進行一
3、次相互通信就成為了一個值得考慮的問題。 爬蟲之間的通訊帶寬可能是有限的, 通常 需要通過互聯(lián)網(wǎng)進行通信。在實際應用中, 基于局域網(wǎng)分布式網(wǎng)絡爬蟲應用的更廣一些, 而基于廣域網(wǎng)的爬蟲由于 實現(xiàn)復雜, 設計和實現(xiàn)成本過高, 一般只有實力雄厚和采集任務較重的大公司才會使用這種 爬蟲。本論文所設計的爬蟲就是基于局域網(wǎng)分布式網(wǎng)絡爬蟲。、分布式網(wǎng)絡爬蟲整體分析分布式網(wǎng)絡爬蟲的整體設計重點應該在于爬蟲如何進行通信。 目前分布式網(wǎng) 絡爬蟲按通信方式不同分布式網(wǎng)路爬蟲可以分為主從模式、 自治模式與混合模式 三種。主從模式是指由一臺主機作為控制節(jié)點負責所有運行網(wǎng)絡爬蟲的主機進行管理, 爬蟲只 需要從控制節(jié)點那里接
4、收任務, 并把新生成任務提交給控制節(jié)點就可以了, 在這個過程中不 必與其他爬蟲通信,這種方式實現(xiàn)簡單利于管理。而控制節(jié)點則需要與所有爬蟲進行通信, 它需要一個地址列表來保存系統(tǒng)中所有爬蟲的信息。 當系統(tǒng)中的爬蟲數(shù)量發(fā)生變化時, 協(xié)調(diào) 者需要更新地址列表里的數(shù)據(jù), 這一過程對于系統(tǒng)中的爬蟲是透明的。 但是隨著爬蟲網(wǎng)頁數(shù) 量的增加。 控制節(jié)點會成為整個系統(tǒng)的瓶頸而導致整個分布式網(wǎng)絡爬蟲系統(tǒng)性能下降。 主從 模式的整體結構圖:自治模式是指系統(tǒng)中沒有協(xié)調(diào)者,所有的爬蟲都必須相互通信,比主從模式 下爬蟲要復雜一些。 自治模式的通信方式可以使用全連接通信或環(huán)形通信。 全連 接通信是指所用爬蟲都可以相互發(fā)送
5、信息, 使用這種方式的每個網(wǎng)絡爬蟲會維護 一個地址列表, 表中存儲著整個系統(tǒng)中所有爬蟲的位置, 每次通信時可以直接把 數(shù)據(jù)發(fā)送給需要此數(shù)據(jù)的爬蟲。 當系統(tǒng)中的爬蟲數(shù)量發(fā)生變化時, 每個爬蟲的地 址列表都需要進行更新。 環(huán)形通信是指爬蟲在邏輯上構成一個環(huán)形網(wǎng), 數(shù)據(jù)在環(huán) 上按順時針或逆時針單向傳輸, 每個爬蟲的地址列表中只保存其前驅和后繼的信 息。爬蟲接收到數(shù)據(jù)之后判斷數(shù)據(jù)是否是發(fā)送給自己的, 如果數(shù)據(jù)不是發(fā)送給自 己的,就把數(shù)據(jù)轉發(fā)給后繼;如果數(shù)據(jù)是發(fā)送給自己的,就不再發(fā)送。假設整個 系統(tǒng)中有 n 個爬蟲,當系統(tǒng)中的爬蟲數(shù)量發(fā)生變化時, 系統(tǒng)中只有 n-1 個爬蟲的 地址列表需要進行更新。混合
6、模式是結合上面兩種模式的特點的一種折中模式。 該模式所有的爬蟲都可以 相互通信同時都具有任務分配功能。 不過所有爬蟲中有個特殊的爬蟲, 該爬蟲主 要功能對已經(jīng)經(jīng)過爬蟲任務分配后無法分配的任務進行集中分配。 使用這個方式 的每個網(wǎng)絡爬蟲只需維護自己采集范圍的地址列表。 而特殊爬蟲需除了保存自己 采集范圍的地址列表外還保存需要進行集中分配的地址列表。 混合模式的整體結 構圖:三、大型分布式網(wǎng)絡爬蟲體系結構圖:從這些圖可以看出, 分布式網(wǎng)絡爬蟲是一項十分復雜系統(tǒng)。 需要考慮很多方面因素。 性 能可以說是它這重要的指標。當然硬件層面的資源也是必須的。不過不在本系列考慮范圍。 從下篇開始, 我將從單機網(wǎng)
7、絡爬蟲一步步介紹我們需要考慮的問題的解決方案。 如果大家有 更好的解決方案。歡迎指教。吉日的一句話說的很有道理, 一個人一輩子只能做好幾件事。 希望大家支持我的這個系 列。談談網(wǎng)絡爬蟲設計中的問題網(wǎng)絡蜘蛛現(xiàn)在開源的已經(jīng)有好幾個了, Larbin ,Nutch ,Heritrix 都各有用戶之地,要做 一個自己的爬蟲要解決好多個問題, 比如調(diào)度算法、更新策略、分布式存儲等,我們來一一 看一下。一個爬蟲要做的事主要有以下這些1.從一個網(wǎng)頁入口,分析鏈接,一層一層的遍歷,或者從一組網(wǎng)頁入口,或者從一個 rss 源列表開始爬 rss ;2.獲取每個頁面的源碼保存在磁盤或者數(shù)據(jù)庫里;3. 遍歷抓下來的網(wǎng)
8、頁進行處理,比如提取正文,消重等;4. 根據(jù)用途把處理后的文本進行索引、分類、聚類等操作。以上是個人理解哦,呵呵。這些過程中,大約有如下問題 如何獲取網(wǎng)頁源或者 RSS 源 如果是一般的爬蟲的話, 就是給幾個入口頁面, 然后順著超鏈接以遍歷圖的算法一個頁面一 個頁面的爬,這種情況網(wǎng)頁源很少,可以選擇從 hao123 等網(wǎng)址大全的網(wǎng)站為入口開始爬。 如果做垂直搜索的話就人工去收集一些這個行業(yè)的網(wǎng)站, 形成一個列表, 從這個列表開始爬。 如果是爬 RSS 的話,需要先收集 RSS源,現(xiàn)在大的門戶的新聞頻道和主流的博客系統(tǒng)都有 rss 的功能,可以先爬一遍網(wǎng)站,找出 rss 的鏈接,要獲取每個鏈接的
9、內(nèi)容,分析是否是 rss 格式,如果是就把這個鏈接保存到 rss源數(shù)據(jù)庫里, 以后就專門爬這個 rss源的 rss。還有一 種就是人工來整理,一般 blog 的 rss 都是有規(guī)律的,主域名跟一個用戶名后面再跟上一個 rss 的固定頁面,比如,這樣就弄一個用戶字典,拼接 rss 地址,然后用程序去探測是否有 這個頁面來整理出每個網(wǎng)站的 rss 源。整理出 rss 源后再人工設置 rss 源的權重及刷新時間 間隔等。如果源頁面很多,如何用多線程去有效的調(diào)度處理,而不會互相等待或者重復處理 如果現(xiàn)在有 500 萬個頁面要去爬,肯定要用多線程或者分布式多進程去處理了??梢园秧?面進行水平分割, 每個
10、線程處理一段兒, 這樣每個線程之間不需要同步, 各自處理各自的就 行了。比如給這 500W 個頁面分配一個自增 ID,2 個線程的話就讓第一個線程去爬1, 3,5的網(wǎng)頁,第二個線程去爬 2, 4,6 的網(wǎng)頁,這樣做多個線程間基本上能均衡,而且不會相 互等待,而且不會重復處理,也不會拉掉網(wǎng)頁。每個線程一次取出 1w 個頁面,并記錄最高 的源頁面 ID 號,處理完這一批后再從數(shù)據(jù)庫里提取大于這個源頁面 ID 號的下 1W 個頁面, 直到抓取完本線程要處理的所有頁面。 1w 這個值根據(jù)機器的內(nèi)存可做適當?shù)恼{(diào)整。為了防 止抓了半截兒死機, 所以要支持斷點續(xù)抓, 要為每個線程的處理進度保存狀態(tài), 每取一
11、批網(wǎng) 頁都要記錄本線程最大的網(wǎng)頁 ID,記錄到數(shù)據(jù)庫里,進程重啟后可以讀取這個 ID ,接著抓 后面的頁面。如何盡量的利用 CPU ,盡量的不讓線程處于等待、休眠、阻塞等空閑狀態(tài)而且要盡量用少 的線程以減少上下文切換。爬蟲有兩個地方需要 IO 操作,抓網(wǎng)頁的時候需要通過網(wǎng)卡訪問網(wǎng)絡,抓到網(wǎng)頁后要把內(nèi)容 寫到磁盤或者數(shù)據(jù)庫里。所以這兩個部分要用異步 IO 操作,這樣可以不用線程阻塞在那里 等待網(wǎng)頁抓過來或者寫完磁盤文件,網(wǎng)卡和硬盤都支持內(nèi)存直接讀取,大量的 IO 操作會在 硬件驅動的隊列里排隊, 而不消耗任何 CPU。.net 的異步操作使用了線程池, 不用自己頻繁 的創(chuàng)建和銷毀線程,減少了開銷
12、,所以線程模型不用考慮, IO 模型也不用考慮, .net 的異 步 IO 操作直接使用了完成端口,很高效了,內(nèi)存模型也不需要考慮,整個抓取過程各線程不需要訪問共享資源,除了數(shù)據(jù)庫里的源頁面,各管各的,而且也是每個線程分段處理,可 以實現(xiàn)無鎖編程。如何不采集重復的網(wǎng)頁去重可以使用 king 總監(jiān)的布隆過濾器 ,每個線程使用一個 bitarray ,里面保存本批源頁面上次 抓取的頁面的哈希值情況, 抓取下來的源頁面分析鏈接后, 去這個 bitarray 里判斷以前有沒 有抓過這個頁面, 沒有的話就抓下來, 抓過的話就不管了。 假設一個源頁面有 30 個鏈接把, 一批 10W 個源頁面, 300w
13、 個鏈接的 bitarray 應該也不會占太大內(nèi)存。 所以有個五六個線程 同時處理也是沒問題的。抓下來的頁面更快的保存保存到分布式文件系統(tǒng)還是保存在數(shù)據(jù)庫里 如果保存到磁盤, 可以每個域名創(chuàng)建一個文件夾, 凡是這個網(wǎng)站的頁面都放到這個文件夾下, 只要文件名不一樣, 就不會出現(xiàn)沖突。 如果把頁面保存到磁盤, 數(shù)據(jù)庫有自己的一套鎖管理 機制,直接用 bulk copy 放數(shù)據(jù)庫就行了。 一般頻繁的寫磁盤可能會引起 CPU過高,而頻繁 的寫數(shù)據(jù)庫 CPU 還好一些。而且 sqlserver2008 支持 類型 的字段,在保存大文本字段的時候 有很好的性能,并且還能使用數(shù)據(jù)庫的 API 來訪問。所以我覺得如果沒有 GFS 那樣高效成 熟的分布式文件系統(tǒng)的話還不如存 sqlserver 里面呢。如何有效的根據(jù)網(wǎng)頁的更新頻率來調(diào)整爬蟲的采集時間間隔 做爬蟲要了解一些 HTTP 協(xié)議,如果要抓的網(wǎng)頁支持 Last-Modified 或者 ETag 頭,我們可以先 發(fā)個 head 請求來試探這個頁面有沒有變化來決定是否要重新抓取,但是好多網(wǎng)站根本就不支持這個東西, 所以讓爬蟲也很費勁, 讓自己的網(wǎng)站也會損失更多的性能。 這樣我們就要自 己去標注每個源頁面的更新時間間隔及權重,再根據(jù)這兩個值去用一定的算法 制定蜘蛛的更新策略。采集下來的數(shù)據(jù)做什么用可
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 硬件設施維護與更新工作總結計劃
- 2024年西安市團結實驗學校招聘筆試真題
- 2024年湖南省交通運輸廳下屬事業(yè)單位真題
- 微生物世界探索活動計劃
- 法律與經(jīng)濟政策的協(xié)調(diào)試題及答案探討
- 2024年福建藝術職業(yè)學院招聘筆試真題
- 建立良好團隊文化的路徑計劃
- 一個學期的教學反思與總結計劃
- 如何提高倉庫的系統(tǒng)性計劃
- 網(wǎng)絡管理員考試新版本試題及答案
- 寫作技巧知識培訓課件
- 順豐公司外包協(xié)議合同書
- 安全意識提升策略試題及答案
- 2025年度教師資格證考試綜合素質(zhì)必考250個重點知識匯編
- 2025年中考數(shù)學三輪沖刺訓練一次函數(shù)中幾何壓軸題綜合訓練
- 中考英語詞匯電子版單選題100道及答案
- 2025年中考政治總復習必考重點知識復習提綱
- 河南省安陽市(百師聯(lián)盟)2023-2024學年高一下學期5月大聯(lián)考數(shù)學試題(人教版)(解析版)
- 屋面防水及改造工程投標方案(技術方案)
- 口腔正畸考試試題及答案
- 血液透析患者內(nèi)瘺感染的護理
評論
0/150
提交評論