1. 程式人生 > >python網路爬蟲(web spider)系統化整理總結(一):入門

python網路爬蟲(web spider)系統化整理總結(一):入門

接觸爬蟲很久了,一直沒有個系統的理解和整理,近來假日無事,總結一下。

-------------------------------------------以下是目錄---------------------------------------------------------

一、爬蟲概述及分類

二、爬蟲的應用場景

三、爬蟲的一般執行過程

四、爬蟲技術常用的知識

五、反爬蟲

-------------------------------------------以下是正文---------------------------------------------------------

一、爬蟲概述及分類

        網路爬蟲(又被稱為網頁蜘蛛,網路機器人,在FOAF社群中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取全球資訊網資訊的程式或者指令碼。另外一些不常使用的名字還有螞蟻、自動索引、模擬程式或者蠕蟲。

       目前爬蟲種類和一些基本資訊如下:

     

二、爬蟲的應用場景

三、爬蟲的一般執行過程

執行過程:

         

各部分執行關係流程圖:

四、爬蟲技術常用的知識

       1、資料抓取:

                 1.1,涉及的過程主要是模擬瀏覽器向伺服器傳送構造好的http請求,一般是get或者post型別;

                 1.2,爬蟲的實現,除了scrapy框架

之外,python有很多可供呼叫的庫:

                         urllib、requests、mechanize:用於獲取URL對應的原始響應內容;

                         selenium、splinter通過載入瀏覽器驅動,獲取渲染之後的響應內容,模擬程度高,但是效率低;

                 1.3,http協議、身份認證機制(Cookie);

                 1.4,網路流量分析:Chrome、Firfox+Firebug、FiddlerBurp 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的執行環境,以確定使用的是不是瀏覽器。