爬蟲的基本流程
網絡爬蟲的基本工作流程如下:
首先選取一部分精心挑選的種子URL
將種子URL加入任務隊列
從待抓取URL隊列中取出待抓取的URL,解析DNS,并且得到主機的ip,并將URL對應的網頁下載下來,存儲進已下載網頁庫中。此外,將這些URL放進已抓取URL隊列。
分析已抓取URL隊列中的URL,分析其中的其他URL,并且將URL放入待抓取URL隊列,從而進入下一個循環(huán)。
解析下載下來的網頁,將需要的數據解析出來。
數據持久話,保存至數據庫中。
爬蟲的抓取策略
在爬蟲系統(tǒng)中,待抓取URL隊列是很重要的一部分。待抓取URL隊列中的URL以什么樣的順序排列也是一個很重要的問題,因為這涉及到先抓取那個頁面,后抓取哪個頁面。而決定這些URL排列順序的方法,叫做抓取策略。下面重點介紹幾種常見的抓取策略:
深度優(yōu)先策略(DFS)
深度優(yōu)先策略是指爬蟲從某個URL開始,一個鏈接一個鏈接的爬取下去,直到處理完了某個鏈接所在的所有線路,才切換到其它的線路。
此時抓取順序為:A -> B -> C -> D -> E -> F -> G -> H -> I -> J廣度優(yōu)先策略(BFS)
寬度優(yōu)先遍歷策略的基本思路是,將新下載網頁中發(fā)現的鏈接直接插入待抓取URL隊列的末尾。也就是指網絡爬蟲會先抓取起始網頁中鏈接的所有網頁,然后再選擇其中的一個鏈接網頁,繼續(xù)抓取在此網頁中鏈接的所有網頁。
此時抓取順序為:A -> B -> E -> G -> H -> I -> C -> F -> J -> D
了解了爬蟲的工作流程和爬取策略后,就可以動手實現一個爬蟲了!那么在python里怎么實現呢?
技術棧
requests 人性化的請求發(fā)送
Bloom Filter 布隆過濾器,用于判重
XPath 解析HTML內容
Anti crawler strategy 反爬蟲策略
MySQL 用戶數據存儲