畢業設計中怎樣用python寫一個搜尋引擎的分布式爬蟲—異樣的美感

來源:互聯網
上載者:User
用python編寫分布式爬蟲
1、 網路連接需要持續串連(persistent connection),DNS解析的瓶頸(先查本地DNS緩衝)

實現方法:基於python httplib(對http1.1完成對持續串連的支援(python的httplib完全支援http1.1),如果不是http1.1那麼可以使用urlopen對其進行一次串連)並對其socket對象進行控制,關鍵是加入對讀取DNS本機快取(在我的機制下這個根本就不是主要問題可以暫時忽略),以及有settimeout(Igloo)(搞定,就用setdefaulttimeout())的支援(或者利用自己的DNS伺服器,進行最佳化處理),以及對sock對象的settimeout進行設定,防止長時間的等待一個有可能串連不上的web伺服器.(要測試一下串連模組和DNS解析模組在訪問不存在url在預設情況下的時間消耗)對網站的ip解析出來後就直接用ip進行串連而避免了重複調用DNS解析.例子:socket.gethostbyname("www.163.com")

網路連接下載模組非常重要,需要精心反覆測試,因為有可能碰到一些不規範的web伺服器,如果沒有加以考慮會使整個線程崩潰。

   
2、    多線程:機器任務的分配及網站任務的分配。

實現方法:(在某台機器上實現,在對本機記憶體cpu的消耗情況判斷後對機器任務進行分配;在對和網站的串連情況進行判斷後對網站任務進行分配)
機器任務的分配:對於機器負擔的情況調整在一個機器開的線程的個數。(在關閉線程時注意要先讓線程完成當前運行任務)
網站任務的分配:就是某個機器對一個網站開的線程的個數的分配。(同樣是要注意關閉線程時先讓其完成當前任務)

3、    對web檔案樹遍曆過程更好的控制,對web檔案樹在廣度優先遍曆時層次的判斷。(整個網路是一個圖,而某個網站的模型更接近於一棵樹)

實現方法:在每個地址進入隊列時加一個層次號,那麼要遍曆第n層的話那麼遍曆到第一個n+1就停止讀取。

4、    利用robotparser解析robots.txt

5、    單個機器spider的作用:a)    同2多線程3檔案樹的遍曆b)    將擷取的外部url發回中央控制器,並從中央控制器取回新的外部url。

6、    中央控制器的作用:a)    觀察各機器的狀態包括:cpu、記憶體、線程、網站、網路流量
b)    觀察對外整體網路流量和串連狀況,可以根據網路狀況來調節timeout。c)    接受各個機器發送過來的外部url並對每個url的重複數字計數。然後分配到各個機器。(分配時要用爬行策略控制器對外部url進行排序來分配,Igloo利用Page Rank,我們可以使用最簡單的重複越多重要係數就越高來進行排序)d)    分布式URL分配演算法:Igloo1.2的二級雜湊映射演算法(集中式分配演算法那個中央控制器容易成為系統瓶頸)複習雜湊演算法,還有就是對url是否訪問過的判斷(Igloo使用的是URL Trie滯後合并策略)。可以使用Berkeley DB作為URL Trie的替代品。兩種實現方式的比較:i.    現在的想法:(面向網站,資訊顆粒大)外部連結只是儲存主機名稱比如:www.163.com, 站內訪問用解析好的ip地址維持串連,用相對連結來得到各個頁面,這樣就要維護一個外部連結清單,幾個網站的連結清單。優點:節省記憶體,對某個網站的資訊擷取全面,對網站的出現頻率統計,排序,重要網站先取。 缺點:對連結的擷取的全面性得不到保證,而且不能擷取更多的重要頁面,每個網站的重要頁面也不會很多。
ii.    老方案:(面向頁面,資訊顆粒小)所有串連一視同仁。缺點:浪費資源,對單一網站的擷取不一定全面。優點:可以得到全面的連結圖,可以使用Page Rank對列表進行排序,頁面更重要就在最前面。

7、    解析html(超級連結的提取)搞定(用python的sgmllib)缺點:速度太慢(可能會造成瓶頸,要好好封裝好,以後有機會換掉它)
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.