二、爬蟲入門——requests的基本使用
阿新 • • 發佈:2018-12-10
1.作用:傳送請求獲取響應
為什麼使用requesst?
1)requests底層實現的是urllib
2)requests在python2和python3中通用,方法完全一樣
3)requests簡單易用(python特性)
4)requests能夠幫助我們解壓響應內容(自動解壓完善請求頭,自動獲取cookie)
2. 傳送簡單的get請求、獲取響應
response = requests.get(url)
3. response響應物件常用的屬性
一般來說名詞,往往都是物件的屬性,對應的動詞是物件的方法
response.url
response.status_code 響應狀態碼
response.text 響應體 str型別
response.content 響應體 bytes型別
response.headers 響應對應的請求頭
response.request.headers 響應頭
response.cookies 響應的cookie (經過了set-cookie動作)
response.request._cookies 響應對應請求的cookie
4. 解決響應內容中文亂碼
response.text 是requests模組基於chardet模組對響應內容的編碼格式做推測,進行轉換並返回str型別
response.content.decode(‘utf8’)
decode的引數要去嘗試 ascii gbk gb2312 iso-8859-1
5.獲取圖片儲存到本地
- 找到圖片的url
- 傳送請求獲取響應
- 儲存圖片:
圖片url對應的響應內容就是圖片本身!
圖片儲存的格式
開啟檔案的方式 流媒體必須以二進位制方式寫入!
6.傳送帶header的請求
1)為什麼請求需要帶上header:模擬瀏覽器,欺騙伺服器,獲取和瀏覽器一致的內容
2)header的形式:字典
headers = {“User-Agent”: “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36”}
3)模仿瀏覽器傳送請求就需要帶上請求頭(瀏覽器在傳送請求過程中會攜帶的請求頭)
4)用法:resp = requests.get(url, headers={})
5)完整程式碼:
7.傳送帶查詢字串(帶引數)的請求
1)什麼是請求引數:我們在使用百度搜索的時候經常發現URL地址中會有一個?,那麼該問號後邊就是請求引數,又叫做查詢字串
url = ‘https://www.baidu.com/s?wd=python’
其中查詢字串是 “wd=python”
2)請求引數的形式:字典
a. url中直接攜帶查詢字串傳送請求
resp = requests.get(url, headers=headers)
b.利用傳送請求的方法中params引數接收查詢字串構造的字典
params = {‘wd’: ‘python’}
resp = requests.get(url, headers=headers, params=params)
3)關於引數的注意點
在url地址中, 很多引數是沒有用的,比如百度搜索的url地址,其中引數只有一個欄位有用,其他的都可以刪除 如何確定那些請求引數有用或者沒用:挨個嘗試! 對應的,在後續的爬蟲中,越到很多引數的url地址,都可以嘗試刪除引數