簡述網路爬蟲的系統實現

2021-08-26 12:55:27 字數 1101 閱讀 7536

網路爬蟲常常被人所忽略,特別是和搜尋引擎的光環相比,它似乎有些暗淡無光。我很少看見有詳細介紹爬蟲實現的文章或者文件。然而,爬蟲其實是非常重要的乙個系統,特別是在今天這個資料為王的時代。如果你是乙個剛剛開始的公司或者專案,沒有任何原始的資料積累,那麼通過爬蟲去internet上找到那些有價值的資料再進行資料的清洗和整理,是乙個可以快速得到資料的重要手段。

此外,既然本文側重於系統方面的問題,那麼某些內容就不會涉及,比如如何抓取那些隱藏的web資料,如何抓取ajax的頁面,如何動態調整抓取頻率等等。

正文fetcher和dns resolver

content seen

extractor和url filter

url seen

url set

當url經過前面的一系列處理後就會被放入到url set中等待被排程抓取。因為url的數量很大,所以只有一小部分可能被放在記憶體中,而大部分則會寫入到硬碟。一般url set的實現就是一些檔案或者是資料庫。

url frontier

分布式當單機版的爬蟲效能不能滿足要求的時候,就應該考慮用多台機器組成分布式的爬蟲系統。分布式的爬蟲架構其實要比想象的簡單得多,乙個樸素的做法是:假設有n臺機器,每台機器上有執行了乙個完整的爬蟲系統,每台機器的爬蟲在從extractor模組獲得新的url之後,根據url的網域名稱進行hash然後取模n得到結果n,然後該url會被放入第n臺機器的url set中。這樣,不同**的url會被放在不同的機器上處理。

以上就是乙個完整爬蟲的系統實現。當然,由於篇幅有限迴避了一些細節。比如爬蟲抓取每個**前需要先讀取該**的robots.txt來判斷該**是否允許被抓取(前段時間京東就在robots.txt中將一淘的爬蟲遮蔽了,需要說明的是,robots.txt只是乙個業內約定,它並不能從技術上強制的拒絕爬蟲的抓取);再比如,一些**提供了sitemap,這樣可以直接從sitemap上獲取該**的所有url;等等。

reference

mercator: a scalable, extensible web crawler, 1999

design and implementation of a high-performance distributed web crawler, 2002

簡述網路爬蟲的系統實現

網路爬蟲常常被人所忽略,特別是和搜尋引擎的光環相比,它似乎有些暗淡無光。我很少看見有詳細介紹爬蟲實現的文章或者文件。然而,爬蟲其實是非常重要的乙個系統,特別是在今天這個資料為王的時代。如果你是乙個剛剛開始的公司或者專案,沒有任何原始的資料積累,那麼通過爬蟲去internet上找到那些有價值的資料再進...

網路爬蟲的實現

網路爬蟲常常被人所忽略,特別是和搜尋引擎的光環相比,它似乎有些暗淡無光。我很少看見有詳細介紹爬蟲實現的文章或者文件。然而,爬蟲其實是非常重要的乙個系統,特別是在今天這個資料為王的時代。如果你是乙個剛剛開始的公司或者專案,沒有任何原始的資料積累,那麼通過爬蟲去internet上找到那些有價值的資料再進...

JAVA網路爬蟲的實現

記得在剛找工作時,隔壁的一位同學在面試時豪言壯語曾實現過網路爬蟲,當時的景仰之情猶如滔滔江水連綿不絕。後來,在做搜尋時,需要大量的測試,因此萌生了從amazon中爬取圖書封面的想法,從網上也吸取了一些前人的經驗,實現了乙個簡單但足夠用的爬蟲系統。img 傳統爬蟲從乙個或若干初始網頁的url開始,獲得...