1. 程式人生 > >一、爬蟲介紹

一、爬蟲介紹

一、網路爬蟲 爬蟲又叫網路爬蟲,網路蜘蛛,一種執行在網際網路上用來獲取資料的的自動程式。
  • 網際網路的資料,有很多,一般都是根據業務需求來的。
    • 網頁(文字、圖片、視訊)
    • 商品資料
  • 怎麼獲取資料?    
    • HTTP協議
    • 人的操是通過瀏覽器的,程式是利用網路請求的相關協議獲取資料。
  • 自動化,儘可能減少人工的干預。
    • 爬蟲開發的技術,沒有限制的。
python做網路爬蟲是非常流行的。 Java 編寫爬蟲框架。 二、資料的分類
1、內部資料 業務資料 ,公司使用BI Business Intelligence )、CRM 系統、ERP 系統、郵件系統等產生的資料; 財務資料 ,其中包括公司的支出、採購、收入等多項與公司日常運作有關的資料; 使用者資料 ,無論是網站、APP 還是遊戲,使用者註冊都會填寫郵箱、電話、身份證號碼等資料,這些資料其實非常有價值,此外還要加上使用者使用公司產品留下的行為資料。 歷史資料 ,公司沉澱下來的其他各種資料。 2、外部資料 社交網站資料 ,包括微信、微博、人人網、
Twitter Facebook LinkedIn 等社交媒體上的資料。 說明:社交資料部分是可以爬取的,另外一部分是需要運營方授權的。 線下采集資料 ,包括Wifi 熱點資料、地圖資料等。 說明:這一塊目前做的公司比較少,但同時也比較有價值。 政府開放資料,包括企業徵信資料、企業註冊資料、法院公示資料、公共交通資料等。 說明:如果你想要找的話,可到對應政府網站下載。 智慧裝置資料 ,包括智慧裝置、感測器資料。 說明:你知道嗎?一部智慧手機,至少擁有8 個感測裝置。 網路爬蟲資料
,包括網際網路上所有可以爬回的資料,文字、視訊、圖片其實也是資料,而且是非結構化資料。 企業交易資料 ,包括商家流水資料、支付寶交易資料、信用卡消費資料等等。 說明:目前這一部分資料是最難獲取的,因為資料就是寶貴的資產。 企業開放資料 ,比如微博開放了商業資料API ,騰訊開放了騰訊雲分析SDK 上報的應用資料,高德地圖開放了LBS 資料等等。 說明:如果想找更多的資料API ,我推薦你去資料堂、聚合資料這兩家網站上看一下,上面有大量的API 介面。 其它資料 ,比如天氣資料、交通資料、人口流動資料、位置資料等等。 在網際網路公司,不管內部資料還是外部資料,其實都是為了獲取使用者相關的資料。 拿到使用者的行為資料之後,會分析使用者。 比如說電商類網站就是為推薦商品,搜尋類的網站為了精準營銷( 傢俱類) 廣告聯盟。 三、大資料與網路爬蟲 大資料就是整合完公司內部外部資料,進行大資料儲存,然後通過清洗,標註、去重、去噪、關聯等過程可以將資料進行結構化,也可以進行大資料探勘和資料分析,再以資料視覺化呈現結果,打通資料孤島形成資料閉環,將資料轉換成“石油”和“生產資料”,最後應用到我們日常的生活、學習和工作中去。 四、爬蟲與搜尋系統 搜尋系統可以簡單的分為兩類, 通用搜索,站內搜尋   通用搜索:像百度,谷歌會爬取網際網路上所有的資料 站內搜尋:只需要業務系統的資料。 垂直搜尋:行業資料和自己的資料。 總結:搜尋一定會包含爬蟲(除站內搜尋外),爬蟲爬取的資料不一定是為搜尋服務。除了搜尋功能以外,爬蟲爬取的資料主要用來做資料分析。 五、爬蟲的分類 網路爬蟲按照系統結構和實現技術,大致可以分為以下幾種型別:
  • 通用網路爬蟲(General Purpose Web Crawler
  • 聚焦網路爬蟲(Focused Web Crawler
  • 增量式網路爬蟲(Incremental Web Crawler
  • 深層網路爬蟲(Deep Web Crawler
實際的網路爬蟲系統通常是幾種爬蟲技術相結合實現的。 六、爬蟲開發實現原理 本質:HTTP請求 使用Http Get協議獲取資料,使用postt提交資料 客戶端向伺服器傳送一個請求,請求頭包含請求的方法、URL 、協議版本、以及包含請求修飾符、客戶資訊和內容的類似於MIME 的訊息結構。   伺服器以一個狀態行作為響應,響應的內容包括訊息協議的版本,成功或者錯誤編碼加上包含伺服器資訊、實體元資訊以及可能的實體內容。 通常HTTP 訊息包括客戶機向伺服器的請求訊息和伺服器向客戶機的響應訊息。這兩種型別的訊息由一個起始行,一個或者多個頭域,一個指示頭域結束的空行和可選的訊息體組成。 六、實現過程
  1. 指定一個種子url放入到佇列中
  2. 從佇列中獲取某個URL
  3. 使用HTTP協議發起網路請求
  4. 在發起網路請求的過程中,需要將域名轉化成IP地址,也就是域名解析
  5. 得到伺服器的響應,此時是二進位制的輸入流
  6. 將二進位制的輸入流轉換成HTML文件,並解析內容(我們要抓取的內容,比如標題)。
  7. 將解除出來的內容保持到資料庫
  8. 記錄當前URL,並標記為已爬取,避免下次重複爬取。
  9. 從當前的HTML文件中,解析出頁面中包含的其它URL,以供下次爬取
  10. 判斷解析出來的URL是否已經爬取過了,如果已經爬取就丟棄掉
  11. 將還沒爬取過的URL,存放到等待爬取的URL佇列中。
  12. 重複以上的步驟,指導等待爬取的URL佇列中沒有資料