- 精通Python網絡爬蟲:核心技術、框架與項目實戰
- 韋瑋
- 930字
- 2019-01-05 03:22:43
3.2 爬行策略
在網絡爬蟲爬取的過程,在待爬取的URL列表中,可能有很多URL地址,那么這些URL地址,爬蟲應該先爬取哪個,后爬取哪個呢?在通用網絡爬蟲中,雖然爬取的順序并不是那么重要,但是在其他很多爬蟲中,比如聚焦網絡爬蟲中,爬取的順序非常重要,而爬取的順序,一般由爬行策略決定。在這一節中,我們將為大家介紹一些常見的爬行策略。
爬行策略主要有深度優先爬行策略、廣度優先爬行策略、大站優先策略、反鏈策略、其他爬行策略等。下面我們將分別進行介紹。
如圖3-3所示,假設有一個網站,ABCDEFG分別為站點下的網頁,圖中箭頭表示網頁的層次結構。

圖3-3 某網站的網頁層次結構示意圖
假如此時網頁ABCDEFG都在爬行隊列中,那么按照不同的爬行策略,其爬取的順序是不同的。
比如,如果按照深度優先爬行策略去爬取的話,那么此時會首先爬取一個網頁,然后將這個網頁的下層鏈接依次深入爬取完再返回上一層進行爬取。
所以,若按深度優先爬行策略,圖3-3中的爬行順序可以是:A → D → E → B → C → F → G。
如果按照廣度優先的爬行策略去爬取的話,那么此時首先會爬取同一層次的網頁,將同一層次的網頁全部爬取完后,在選擇下一個層次的網頁去爬行,比如,上述的網站中,如果按照廣度優先的爬行策略去爬取的話,爬行順序可以是:A→B→C→D→E→F→G。
除了以上兩種爬行策略之外,我們還可以采用大站爬行策略。我們可以按對應網頁所屬的站點進行歸類,如果某個網站的網頁數量多,那么我們則將其稱為大站,按照這種策略,網頁數量越多的網站越大,然后,優先爬取大站中的網頁URL地址。
一個網頁的反向鏈接數,指的是該網頁被其他網頁指向的次數,這個次數在一定程度上代表著該網頁被其他網頁的推薦次數。所以,如果按反鏈策略去爬行的話,那么哪個網頁的反鏈數量越多,則哪個網頁將被優先爬取。但是,在實際情況中,如果單純按反鏈策略去決定一個網頁的優先程度的話,那么可能會出現大量的作弊情況。比如,做一些垃圾站群,并將這些網站互相鏈接,如果這樣的話,每個站點都將獲得較高的反鏈,從而達到作弊的目的。作為爬蟲項目方,我們當然不希望受到這種作弊行為的干擾,所以,如果采用反向鏈接策略去爬取的話,一般會考慮可靠的反鏈數。
除了以上這些爬行策略,在實際中還有很多其他的爬行策略,比如OPIC策略、Partial PageRank策略等。