爪巴蟲簡介

爬蟲分類

網絡爬蟲按照系統結構和實現技術,大致可分爲一下幾種類型:

  • 通用網絡爬蟲:就是儘可能大的網絡覆蓋率,如 搜索引擎(百度、雅虎和谷歌等…)
  • 聚焦網絡爬蟲:有目標性,選擇性地訪問萬維網來爬取信息
  • 增量式網絡爬蟲:只爬取新產生的或者已經更新的頁面信息。特點:耗費少,難度大
  • 深層網絡爬蟲:通過提交一些關鍵字才能獲取的Web頁面,如登錄或註冊後訪問的頁面

實際工作中通常是幾種爬蟲技術結合實現。

應用場景

爬蟲技術在科學研究、Web安全、產品研發、輿情監控等領域可以做很多事情。

  • 在數據挖掘、機器學習、圖像處理等科學研究領域,如果沒有數據,則可以通過爬蟲從網上抓取;
  • 在Web安全方面,使用爬蟲可以對網站是否存在某一漏洞進行批量驗證、利用;
  • 在產品研發方面,可以採集各個商城物品價格,爲用戶提供市場最低價;
  • 在輿情監控方面,可以抓取、分析新浪微博的數據,從而識別出某用戶是否爲水軍;
  • ……

作爲一名合格的數據分析師,其完整的技術知識體系必須貫穿數據獲取、數據存儲、數據提取、數據分析、數據挖掘、數據可視化等各大部分!

技術準備

  1. Python基礎語言:
    基礎語法、運算符、數據類型、流程控制、函數、對象
    模塊、文件操作、多線程、網絡編程 … 等

  2. W3C標準:
    HTML、CSS、JavaScript、Xpath、JSON

  3. HTTP標準:
    HTTP的請求過程、請求方式、狀態碼含義,頭部信息以及Cookie狀態管理

  4. 數據庫:
    MySQL、MongoDB、Redis …

運行流程

在這裏插入圖片描述1)數據抓取:瞭解HTTP請求和響應中各字段的含義;瞭解相關的網絡分析工具,主要用於分析網絡流量,如:burpsuit等。一般情況,使用瀏覽器的開發者模式即可;

2)數據解析:瞭解HTML結構、JSON和XML數據格式,CSS選擇器、Xpath路徑表達式、正則表達式等,目的是從響應中提取出所需的數據;

3)數據入庫:MySQL,SQLite、Redis等數據庫,便於數據的存儲;

常用技術

  • 常用爬蟲庫: urllib、requests、selenium、以及scrapy爬蟲框架

  • 在數據解析方面,相應的庫包括:lxml、beautifulsoup4、re、pyquery。對於數據解析,主要是從響應頁面裏提取所需的數據,常用方法有:xpath路徑表達式、CSS選擇器、正則表達式等。其中,xpath路徑表達式、CSS選擇器主要用於提取結構化的數據。而正則表達式主要用於提取非結構化的數據。

  • 數據的存儲:MySQL、MongoDB、Redis

其中,urllib、requests用來獲取URL對應的原始響應內容;而selenium通過加載瀏覽器驅動,獲取瀏覽器渲染之後的響應內容,模擬程度更高。考慮效率,當然能使用urllib、requests等解決的儘量不用selenium,因爲後者因需要加載瀏覽器而導致效率較低。對於數據抓取,涉及的過程主要是模擬瀏覽器向服務器發送構造好的http請求,常見類型有:get/post。

反爬機制

  1. 基本的反爬蟲手段,主要是檢測請求頭中的字段,比如:User-Agent、referer等。針對這種情況,只要在請求中帶上對應的字段即可。所構造http請求的各個字段最好跟在瀏覽器中發送的完全一樣,但也不是必須。
  2. 基於用戶行爲的反爬蟲手段,主要是在後臺對訪問的IP(或User-Agent)進行統計,當超過某一設定的閾值,給予封鎖。針對這種情況,可通過使用代理服務器解決,每隔幾次請求,切換一下所用代理的IP地址(或通過使用User-Agent列表解決,每次從列表裏隨機選擇一個使用)。這樣的反爬蟲方法可能會誤傷用戶。
  3. 希望抓取的數據是如果通過ajax請求得到的,假如通過網絡分析能夠找到該ajax請求,也能分析出請求所需的具體參數,則直接模擬相應的http請求,即可從響應中得到對應的數據。這種情況,跟普通的請求沒有什麼區別。
  4. 基於Java的反爬蟲手段,主要是在響應數據頁面之前,先返回一段帶有Java代碼的頁面,用於驗證訪問者有無Java的執行環境,以確定使用的是不是瀏覽器。

案例講解

  1. 常規信息爬取:豆瓣網圖書Top250信息爬取
  2. Ajax信息爬取:有道詞典翻譯信息爬取
  3. 動態渲染信息爬取:模擬百度圖片搜索信息爬取
  4. Api接口信息爬取:天氣預報接口信息爬取
  5. App移動端信息爬取:從京東App中爬取商品信息
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章