Python: Requests 套件中的 params, data , json 參數



前言

  • 在 Project Arbinfo 中,時常需要去爬資料,一開始把 params, data, json 三個參數搞混,順便記錄在這邊

Params=

  • 用在 HTTP GET 中的參數,等同於把指定的參數做 urlencode 後放在網址後面:
1
2
3
4
5
6
7
8
    my_param = {
      "fruit_name": "apple",
      "count": 2
    }
    response = requests.get("https://sample.fruit.io", params=my_param)
    
    # 等同於
    # https://sample.fruit.io?fruit_name=apple&count=2

data=

  • 主要用在 HTTP POST 中的 payload
1
2
3
4
5
    data = {
      "fruit_name": "apple",
      "count": 2
    }
    response = requests.post("https://sample.fruit.io", data=data)

json=

  • data= 類似,但是他幫你把 dict 轉成 JSON 字串、並將 header 帶上 'content-type': 'application/json'
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
    data = {
      "fruit_name": "apple",
      "count": 2
    }
    response = requests.post("https://sample.fruit.io", json=data)
    
    
    # 跟下面寫法一樣
    
    headers = {'content-type': 'application/json'}
    
    data = {
      "fruit_name": "apple",
      "count": 2
    }
    response = requests.post("https://sample.fruit.io", data=json.dumps(data), headers=headers)
    



REF

  1. https://stackoverflow.com/questions/15900338/python-request-post-with-param-data

主題 StackJimmy 設計