iT邦幫忙

2021 iThome 鐵人賽

DAY 19
0
Software Development

Python 爬蟲這樣學,一定是大拇指拉!系列 第 19

[Python 爬蟲這樣學,一定是大拇指拉!] DAY19 - Python:Requests 基本應用 (2)

今天要來講的是,讀取送出 Request 後拿回來的 Response。

讀取 Response

  • 以下幾種為常用到的方式:

    • String

      import requests
      
      url = "https://www.example.com/"
      
      # 送出 request
      r = requests.get(url)
      
      # 印出內容
      print(r.text)
      
      # 每次呼叫 r.text 時
      # Requests 會根據 r.encoding 定義的編碼去解碼(decode)接收到的內容
      # r.encoding 預設基本上是 'utf-8',當然使用者也能自行定義
      r.encoding = 'big-5'
      
      # 使用編碼 big-5 印出內容
      print(r.text)
      
      # r.text 型態是 string
      
    • Binary

      import requests
      from PIL import Image
      from io import BytesIO
      
      url = "https://www.example.com/"
      
      # 送出 request
      r = requests.get(url)
      
      # 可以使用 r.content 將 Response 轉成 bytes 型態
      # 當 Response 的編碼是 transfer-encoding 時,Requests 套件會自動幫你解碼
      # Requests 套件支援的 transfer-encoding 有 gzip、deflate 與 br
      # br 需要另外安裝 Brotli library,像是 brotli 或 brotlicffi 
      # 當然,不一定是 transfer-encoding 時才能用 r.content
      # 想使用 bytes 的型態去處理 Response 時,都能使用
      print(r.content)
      
      # 將接收到的 binary content 儲存成圖片
      i = Image.open(BytesIO(r.content))
      
      # r.content 型態是 bytes
      
    • JSON

      import requests
      
      url = "https://www.example.com/"
      
      # 送出 request
      r = requests.get(url)
      
      # r.json() 會自動將 JSON Response 轉成 python 可存取的型態,像是 dict
      response = r.json()
      user = response["user"]
      print(user)
      
      

以上就是幾種常用到的讀取 Response 方式!

更範例可以到官方文件 - Response Content


上一篇
[Python 爬蟲這樣學,一定是大拇指拉!] DAY18 - Python:Requests 基本應用 (1)
下一篇
[Python 爬蟲這樣學,一定是大拇指拉!] DAY20 - Python:Requests 基本應用 (3)
系列文
Python 爬蟲這樣學,一定是大拇指拉!30

尚未有邦友留言

立即登入留言