1. 程式人生 > >二、爬蟲入門——requests的基本使用

二、爬蟲入門——requests的基本使用

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.獲取圖片儲存到本地

  1. 找到圖片的url
  2. 傳送請求獲取響應
  3. 儲存圖片:
    圖片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地址,都可以嘗試刪除引數