舉一個例子來類比一下,在每日的新冠核酸排查時,發現了幾個陽性人員(種子地址),這時候會對每個陽性人員接觸的人員(地址內容)進行排查,對排查出的陽性人員再進行上面的接觸人員排查,層層排查,直到排查出所有陽性人員。
python網絡爬蟲跟上面的例子很相似,
- 首先一批種子地址開始,將這些種子地址加入待處理的任務隊列;
- 任務處理者從上面的任務隊列中取出一個地址,取出后需要將這個地址從任務隊列中移除,同時還要加到已處理地址字典中去,訪問地址獲取數據;
- 處理上面獲取的數據,比如可能是一個網頁,網頁中又可能存在多個地址,比如一個頁面中又很多鏈接地址,將這些地址如果不在已處理的地址字典的話,就加入到待處理的任務隊列。同時提取獲取到的數據中的有用部分存儲下來;
- 周而復始地執行上面2,3步操作,直到待處理地址隊列處理完,或者獲取了到了足夠數量的數據等結束條件。
最后對采集到的有用數據就可以進行清洗,轉化處理,作為爬蟲的最后數據輸出。