1. 程式人生 > 實用技巧 >垂直型爬蟲架構設計(3)

垂直型爬蟲架構設計(3)

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

之前的幾篇博文已經大概的說了一些垂直型爬蟲的功能,現在簡單的介紹一下我所用的爬蟲總體框架的設計,涵蓋整個爬蟲的各個節點.

我所用的爬蟲主要分為兩個部分,也就是兩個節點.主節點與爬蟲節點.

主節點負責所有的爬蟲任務排程工作,包括爬蟲任務的分發,爬蟲任務的重試等.同時也用於分配抓取任務,對於抓取任務做簡單的規劃整理等.

也許比較難以理解,其實也就相當於抓取任務的大管家,這個是我當時學SEO的時候想到的東西,百度爬蟲收錄網站的時候是有規律的.很多SEOer都會在每天固定的時間開始更新網站的內容,新增博文,而且由於我是一個失敗的SEOer也就很奇怪,為什麼百度爬蟲天天跑新浪去,怎麼就不來我的網站踩踩呢.我也更新了呀.有的時候我更新了好幾天才被爬蟲收錄.也就那時知道了什麼叫網站權重.google的PR權重等.從而設計了主節點.


主節點功能有時候很少,簡單來說就是根據網站的權重來分配抓取任務.但是有時候也會很多:會基於爬蟲抓取狀態來判斷這個抓取任務的成敗.對於這些集中進行處理.如: 抓取失敗,網站權重較高,是由於那個爬蟲節點的外網連結問題,那麼就把該抓取任務分配到另外的抓取上,從而實現.再次抓取.

主節點會長時間維護一個抓取佇列.基於爬蟲的反饋與自身的整理來新增與刪減抓取佇列的任務.主節點會基於佇列來推給爬蟲叢集抓取的任務..


爬蟲節點是最簡單的封裝請求,抓取資料,重試,記錄日誌.與解析等工作.爬蟲會根據主節點發來的抓取任務來封裝成一個request,然後直接進入下載,下載完成解析頁面,並且儲存,頁面解析的同時會查詢下次要抓取的連結,加入到待抓取佇列中.繼續下載,直到無法獲取到待抓取連結,無法發現新的連結.這時需要把抓取的結果傳送給主節點,以便主節點對於抓取結果進行維護.一般節點間的資料互動比較簡單,可以簡單的返回成功條數,錯誤條數(404,5XX),抓取時間等.


爬蟲抓取任務完成後,會再次想主節點請求獲取新的抓取任務.再次開啟抓取.完成以上步驟...


下面是簡單的流程圖.

190110_5IRO_1758422.jpg

轉載於:https://my.oschina.net/CainGao/blog/616659