如何提高爬蟲工作效率?

對於大規模爬蟲來說,效率是最核心的問題,沒有效率,就沒有意義。沒有哪個公司或者個人願意等一個月或者幾個月才能爬取幾十萬上百萬的頁面。所以,對於大規模爬蟲來說,優化流程、提升效率是十分重要的。

一、儘量減少訪問次數。

單次爬蟲任務的主要耗時在於網絡請求等待響應,所以能減少網絡請求就儘量減少請求,既能減少目標網站的壓力,也能減少代理服務器的壓力,同時還能減少自己的工作量,提高工作效率。

二、精簡流程,減少重複。

大部分網站並不是嚴格意義上互不交叉的樹狀結構,而是多重交叉的網狀結構,所以從多個入口深入的網頁會有很多重複,一般根據url或者id進行唯一性判別,爬過的就不再繼續爬了。一些數據如果可以在一個頁面內獲取到,也可以在多個頁面下獲取到,那就選擇只在一個頁面內獲取。

三、多線程任務。

大量爬蟲是一個IO阻塞的任務,因此採用多線程的併發方式可以有效地提高整體速度。多線程可以更好地提高資源利用率,程序設計也更加堅定,程序響應也更快。

四、分佈式任務。

上面三點都做到極致了,但是單機單位時間內能爬取到的網頁數量還不足以達到目標,在指定時間內不能及時的完成任務,那麼只能多機器來同時進行爬蟲任務了,這就是分佈式爬蟲。比如有100W個頁面待爬,可以用5臺機器分別爬互不重複的20W個頁面,相對單機耗時就縮短了5倍。
做好以上四點,基本上可以將爬蟲的效率提升一大截,既減少工作量又節約時間,同時也可以減少反爬蟲策略的觸發,一舉多得。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章