爬蟲定義
爬蟲是請求網站並提取自己所需要數據的過程。通過我們的程序,可以代替我們向服務器發送請求,然後進行批量的數據下載。
Python爬蟲基本流程
發起請求
通過url向服務器發送requests請求,請求可以包含額外的header信息。
2.獲取響應內容
如果服務器正常響應,那麼將受到一個response,response即爲我們所請求的網頁內容,可能包含html\json\二進制數據(圖片、視頻)等。
解析內容
如果是html代碼則可以使用網頁解析器進行解析;如果是json數據則可以轉換成json對象進行解析;如果是二進制數據則可以保存到文件進行進一步的處理。
保存數據
可以保存到本地文件,也可以保存到數據庫(mysql\redis\mongodb等)。
requests請求
當我們通過瀏覽器向服務器發送requests請求時,這個request包含什麼內容?可以通過chrome瀏覽器的開發人員工具(F12)查看。
請求方式
最常用的請求方式包括get請求和post請求。
post請求在開發中最常見的是通過表單進行提交,從用戶角度來講最常見的就是登陸驗證。當你需要輸入一些信息進行登陸的時候,這次請求就是post請求。
get請求最常見的就是搜索回車之後,信息將以?間隔添加在url後面。類似於https://www.baidu.com/s?wd=python3%20requests。而且get請求是用來獲取數據,是冪等的。
其他還包括put請求(向服務端發送信息從而改變內容)和delete請求(刪除資源)。
對於資源的操作,其實都可以通過post/get完成,不需要用到put/delete,實際中put/delete也很少用。
uri統一資源定位符
一個網址、一個視頻、一個圖片都可以用uri去定義
requests headers
請求頭,包括這次請求的類型,cookie信息以及瀏覽器類型等。
請求頭在我們進行網頁抓取的時候,服務器會通過解析請求頭來進行信息的審覈,判斷請求是否爲合法請求。所以當我們通過程序僞裝瀏覽器進行請求的時候可以設置請求頭的信息。
請求體
post請求會把用戶信息包裝在form-data裏面進行提交,因此相比於get請求,post請求的Headers標籤的內容會多出Form Data這個信息包。
response
響應狀態
通過Headers中的General可以看到status code,使用數字代碼表示對於狀態,200表示成功,301跳轉,404找不到網頁,502服務器錯誤等。
響應頭
包括內容的類型,cookie信息等。
響應體
請求的目的就是爲了得到響應體,包括html代碼,json及二進制數據等。
requests模塊
安裝使用pip install requests即可。
通過requests進行網頁請求
Python爬蟲基本流程
返回的response爲文本時通過response.text讀取;圖片和視頻等二進制文件通過response.content讀取。
通過添加請求頭信息
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36'}
response1 = requests.get('https://www.baidu.com', headers=headers)