python網路爬蟲(web spider)系統化整理總結(一):入門
接觸爬蟲很久了,一直沒有個系統的理解和整理,近來假日無事,總結一下。
-------------------------------------------以下是目錄---------------------------------------------------------
一、爬蟲概述及分類
二、爬蟲的應用場景
三、爬蟲的一般執行過程
四、爬蟲技術常用的知識
五、反爬蟲
-------------------------------------------以下是正文---------------------------------------------------------
一、爬蟲概述及分類
網路爬蟲(又被稱為網頁蜘蛛,網路機器人,在FOAF社群中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取全球資訊網資訊的程式或者指令碼。另外一些不常使用的名字還有螞蟻、自動索引、模擬程式或者蠕蟲。
目前爬蟲種類和一些基本資訊如下:
二、爬蟲的應用場景
三、爬蟲的一般執行過程
執行過程:
各部分執行關係流程圖:
四、爬蟲技術常用的知識
1、資料抓取:
1.1,涉及的過程主要是模擬瀏覽器向伺服器傳送構造好的http請求,一般是get或者post型別;
1.2,爬蟲的實現,除了scrapy框架
urllib、requests、mechanize:用於獲取URL對應的原始響應內容;
selenium、splinter通過載入瀏覽器驅動,獲取渲染之後的響應內容,模擬程度高,但是效率低;
1.3,http協議、身份認證機制(Cookie);
1.4,網路流量分析:Chrome、Firfox+Firebug、Fiddler、Burp Suite 。
2、資料解析:
2.1,HTM結構、json資料格式、XML資料格式;
2.2,庫:lxml、beautiful-soup4、re、pyquery;
2.3,從頁面提取所需資料的方法:
xpath路徑表示式、CSS選擇器(主要用於提取結構化資料)
正則表示式(主要用於提取非結構化資料)。
3、資料庫:
3.1,結構化資料庫:MySQL、SQLite等;
3.2,非結構化資料庫:Redis等。
4、其他:
4.1,多執行緒、任務排程、訊息佇列、分散式爬蟲、影象識別、反爬蟲技術等等。。。。。。
五、反爬蟲
1. 基本的反爬蟲手段,主要是檢測請求頭中的欄位,比如:User-Agent、 referer等。 針對這種情
況,只要在請求中帶上對應的欄位即可。 所構造http請求的各個欄位最好跟在瀏覽器中傳送的完全一
樣,但也不是必須。
2. 基於使用者行為的反爬蟲手段,主要是在後臺對訪問的IP(或User-Agent)進行統計,當超過某一
設定的閾值,給予封鎖。 針對這種情況,可通過使用代理伺服器解決,每隔幾次請求,切換一下所用
代理的IP地址(或通過使用User-Agent列表解決,每次從列表裡隨機選擇一個使用)。 這樣的反爬
蟲方法可能會誤傷使用者。
3. 希望抓取的資料是如果通過ajax請求得到的,假如通過網路分析能夠找到該ajax請求,也能分析出
請求所需的具體引數,則直接模擬相應的http請求,即可從響應中得到對應的資料。 這種情況,跟普
通的請求沒有什麼區別。
4. 基於Java的反爬蟲手段,主要是在響應資料頁面之前,先返回一段帶有Java程式碼的頁面,用於驗
證訪問者有無Java的執行環境,以確定使用的是不是瀏覽器。