爬蟲是乙個比較容易上手的技術,也許花5分鐘看一篇文件就能爬取單個網頁上的資料。但對於大規模爬蟲,完全就是另一回事,並不是1*n這麼簡單,還會衍生出許多別的問題。
系統的大規模爬蟲流程如圖所示。
api是**官方提供的資料介面,如果通過呼叫api採集資料,則相當於在**允許的範圍內採集,這樣既不會有道德法律風險,也沒有**故意設定的障礙;不過呼叫api介面的訪問則處於**的控制中,**可以用來收費,可以用來限制訪問上限等。整體來看,如果資料採集的需求並不是很獨特,那麼有api則應優先採用呼叫api的方式。
對於html結構固定,即同樣的字段處tag、id和class名稱都相同,採用beautifulsoup解析是一種簡單高效的方案,但有的**混亂,同樣的資料在不同頁面間html結構不同,這種情況下beautifulsoup就不太好使;如果資料本身格式固定,則用正規表示式更方便。比如以下的例子,這兩個都是深圳地區某個地方的經度,但乙個頁面的class是long,乙個頁面的class是longitude,根據class來選擇就沒辦法同時滿足2個,但只要注意到深圳地區的經度都是介於113到114之間的浮點數,就可以通過正規表示式"11[3-4].\d+"來使兩個都滿足。
一般而言,爬下來的原始資料都不是清潔的,所以在入庫前要先整理;由於大部分都是字串,所以主要也就是字串的處理方式了。
如果只是中小規模的爬蟲,可以把最後的爬蟲結果匯合成一張表,最後匯出成一張**以便後續使用;但對於表數量多、單張表容量大的大規模爬蟲,再匯出成一堆零散的表就不合適了,肯定還是要放在資料庫中,既方便儲存,也方便進一步整理。
對於大規模爬蟲,效率是乙個核心問題。單個網頁爬取可能很大,一旦網頁數量級大增之後,任務量也會大增,同時方式下的耗時也會大增。沒有公司或人個願意爬個幾十萬上百萬的頁面還要等幾個月,因此優化流程、提高效率是非常必要的。
大量的頁面往往不會是結構完全一樣,而且大量的訪問也總會出現該訪問成功卻訪問不成功的情況,這些都是非常常見的狀況,因此單一的邏輯無法應對各種不可預知的問題,反映在結果上就是爬取的資料往往會有錯漏的情況。
爬蟲的固定套路也就那麼多,各種**爬取策略的不同就在於**的反爬蟲機制不同,因此多作試驗,摸清**的反爬機制,是大規模爬蟲的先行工作。爬蟲與反爬蟲是無休止的鬥爭,也是乙個見招拆招的過程,但總體來說,以下方法可以繞過常見的反爬蟲。
各種各樣的反爬機制也算是因垂斯聽,只有身經百戰,爬得多了,才能談笑風生,爬蟲水平不知道高到哪去了。有哪些有趣的反爬蟲手段?
原文:
大規模爬蟲流程總結
尊重原創,原文鏈結 爬蟲是乙個比較容易上手的技術,也許花5分鐘看一篇文件就能爬取單個網頁上的資料。但對於大規模爬蟲,完全就是另一回事,並不是1 n這麼簡單,還會衍生出許多別的問題。系統的大規模爬蟲流程如圖所示。api是 官方提供的資料介面,如果通過呼叫api採集資料,則相當於在 允許的範圍內採集,這...
大規模爬蟲流程總結
爬蟲是乙個比較容易上手的技術,也許花5分鐘看一篇文件就能爬取單個網頁上的資料。但對於大規模爬蟲,完全就是另一回事,並不是1 n這麼簡單,還會衍生出許多別的問題。系統的大規模爬蟲流程如圖所示。對於html結構固定,即同樣的字段處tag id和class名稱都相同,採用beautifulsoup解析是一...
大規模爬蟲流程總結
爬蟲是乙個比較容易上手的技術,也許花5分鐘看一篇文件就能爬取單個網頁上的資料。但對於大規模爬蟲,完全就是另一回事,並不是1 n這麼簡單,還會衍生出許多別的問題。系統的大規模爬蟲流程如圖所示。api是 官方提供的資料介面,如果通過呼叫api採集資料,則相當於在 允許的範圍內採集,這樣既不會有道德法律風...