【20181104】python--爬蟲入門總結
前段時間對python爬蟲技術進行了簡單學習,主要目的是為了配合Release Manager日常工作開展相關資料的自動化度量晾晒,比如針對Jira系統中產品需求實現情況和缺陷處理情況進行定時抓取分析併發送郵件報告。
Python爬蟲的常用方案包括幾個部分:排程器、url管理、資料下載、資料解析、資料應用等,也可以採用簡單版的爬蟲,針對現有系統的api介面進行資料抓取和分析。無論怎樣,有幾點核心知識是必須掌握的。
1.爬蟲相關python庫
2.python資料編解碼格式
3.xml/json/bs4等資料解析
我們先看第一點相關python庫,此處我們在python3.x版本前提下進行學習。
爬蟲用到的python庫按照價效比從低到高排行,分別為:urllib.request , requests , scrapy。
urllib.request是基本的http框架庫,它的優點是用法簡單,可以管理cookie進行請求複用;它的缺點是需要使用handler管理http請求中的auth、proxy、cookie等屬性,程式碼寫起來比較繁瑣,請求中傳遞的data資料要自行編碼後才能使用,請求響應的返回值為bytes型別也需要自行解碼後使用。
requests是略微高階的http框架庫,它的優點是auth、proxy、data等屬性管理起來更加簡單,請求響應返回值包括bytes和str型別方便使用;它的缺點是不能管理cookie無法複用請求(注:requests中的session模組增加了cookie管理功能)。
scrapy是專門的爬蟲框架庫,它的優點是資料結構性好,適用於大型專案;它的缺點是上手略困難,不容易深度定製。
如果是想針對Jira等現有系統的api介面進行資料抓取和分析,requests庫更為合適。
我們再看第二點,python資料編解碼格式。
此處首先需要關注python2.x版本和3.x版本之間關於資料格式bytes和str的區別,以及Unicode/UTF-8/GBK等基本資料格式的概念。
另外需要注意常見的編解碼設定,例如在sys模組中設定預設的編碼格式
import sys reload(sys) sys.setdefaultencoding('utf8')
以及在http請求響應返回值中設定編碼格式
response.apparent_encoding
以及在開啟檔案時設定編碼格式 fopen(...,encoding="...").
關於第三點 xml/json/bs4等資料解析內容比較多,我們放到下次單獨總結。