欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

requests.post()方法中data和json參數的使用

 更新時間:2022年02月14日 08:57:03   作者:sunny_happy08  
這篇文章主要介紹了requests.post()方法中data和json參數的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

requests.post()中data和json參數

json和dict

python中的dict類型要轉換為json格式的數據需要用到json庫:

import json?
<json> = json.dumps(<dict>)
<dict> = json.loads(<json>)

需要注意的是python中并沒有json類型這一說法,通過json.dumps(<dict>)轉換的字典對象,最后得到的是一個字符串對象,也就是說,在python中json格式的數據實際上就是一個字符串

>>> j = json.dumps(<dict>)
>>> type(j)
<class 'str'>

雖說json格式的數據在python中是以字符串的類型存在的,但是通過str(<dict>)工廠函數所得到的結果同json.dumps(<dict>)方法所得到的結果是不相同的

>>> d = {'a': 1, 'b': 2}
>>> d_d = {"a": 1, "b": 2}
>>> string = str(d)
>>> string_d = str(d_d)
>>> js = json.dumps(d)
>>> js_d = json.dumps(d_d)
>>> string == string_d
True
>>> js = js_d
True
>>> string == js
False
>>> string
"{'a': 1, 'b': 2}"
>>> js
'{"a": 1, "b": 2}'

可以看出來string和js的區(qū)別在于引號。對于可以作為json.loads(<str>)參數對象的字符串,除了要滿足字典類型的格式外,所有的字符串對象必須是雙引號。

requests.post()

在通過requests.post()進行POST請求時,傳入報文的參數有兩個,一個是data,一個是json。

常見的form表單可以直接使用data參數進行報文提交,而data的對象則是python中的字典類型;

而在最新爬蟲的過程中遇到了一種payload報文,是一種json格式的報文,因此傳入的報文對象也應該是格式的;這里有兩種方法進行報文提交:

import requests
import json?
url = "http://example.com"
data = {
? ? 'a': 1,
? ? 'b': 2,
}
# 1
requests.post(url, data=json.dumps(data))
# 2-json參數會自動將字典類型的對象轉換為json格式
requests.post(url, json=data)

其它

在requests.get()方法中可以使用params參數來構建url

有時候請求得到的結果可能呈現亂碼的狀態(tài),可以通過resp.encoding屬性查看網頁編碼方式,同時可以在獲取resp.text之前對resp.encoding='utf-8'賦值,這樣再次獲取的resp.text則會使用我們要求的編碼方式。

post請求中json和data的區(qū)別

post請求中,可以使用data傳遞參數,也可以使用json傳遞參數

那么這兩種方式有什么區(qū)別呢?

如果參數為JSON數據,可以直接傳入json參數,它將自動編碼并將Content-Type的置為application/json

payload = {'key1': 'value1', 'key2': 'value2'}?
r = requests.post("https://httpbin.org/post", json=payload)
print(r.text)

如果data傳遞的參數為字符串,例如【json.dumps(payload)】,則request對參數進行url編碼,Content-Type的值為None,所以data傳字符串時,一定要在header中指定Content-Type

payload = {'key1': 'value1', 'key2': 'value2'}
headers={"Content-Type": "application/json"}
r = requests.post("https://httpbin.org/post", headers=headers,data=json.dumps(payload))
print(r.text)

如果data傳遞的是字典、元組組成的列表或列表作為值的字典,則request對參數進行url編碼,Content-Type的值為application/x-www-form-urlencoded

# 字典
payload1 = {'key1': 'value1', 'key2': 'value2'} ?
r = requests.post("https://httpbin.org/post", data=payload1)
# 元組組成的列表
payload2 = [('key1', 'value1'), ('key1', 'value2')] ?
r = requests.post("https://httpbin.org/post", data=payload2)
# 列表作為值的字典
payload3 = {'key1': ['value1', 'value2']} ?
r = requests.post("https://httpbin.org/post", data=payload3)

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Python字符串對齊方法使用(ljust()、rjust()和center())

    Python字符串對齊方法使用(ljust()、rjust()和center())

    這篇文章主要介紹了Python字符串對齊方法使用(ljust()、rjust()和center()),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • Python實現號碼歸屬地查詢功能

    Python實現號碼歸屬地查詢功能

    這篇文章主要為大家詳細介紹了如何利用Python實現對手機號碼進行地域分析并查詢歸屬地的功能,感興趣的小伙伴可以跟隨小編一起學習一下
    2022-12-12
  • python目標檢測yolo3詳解預測及代碼復現

    python目標檢測yolo3詳解預測及代碼復現

    這篇文章主要為大家介紹了python目標檢測yolo3詳解預測及代碼復現,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Python + opencv對拍照得到的圖片進行背景去除的實現方法

    Python + opencv對拍照得到的圖片進行背景去除的實現方法

    這篇文章主要介紹了Python + opencv對拍照得到的圖片進行背景去除的實現方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • opencv實現礦石圖片檢測礦石數量

    opencv實現礦石圖片檢測礦石數量

    這篇文章主要為大家詳細介紹了opencv實現礦石圖片檢測礦石數量,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Python安裝及Pycharm安裝使用教程圖解

    Python安裝及Pycharm安裝使用教程圖解

    這篇文章主要介紹了Python安裝以及Pycharm安裝使用教程,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • 深入淺出學習python裝飾器

    深入淺出學習python裝飾器

    這篇文章主要和大家一起深入淺出的學習python裝飾器的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • pyinstaller打包多個py文件和去除cmd黑框的方法

    pyinstaller打包多個py文件和去除cmd黑框的方法

    今天小編就為大家分享一篇pyinstaller打包多個py文件和去除cmd黑框的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • python代碼實現學生信息管理系統(tǒng)

    python代碼實現學生信息管理系統(tǒng)

    這篇文章主要為大家詳細介紹了python代碼實現學生信息管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Python實現的將文件每一列寫入列表功能示例【測試可用】

    Python實現的將文件每一列寫入列表功能示例【測試可用】

    這篇文章主要介紹了Python實現的將文件每一列寫入列表功能,涉及Python文件讀取、遍歷、序列追加、賦值等相關操作技巧,需要的朋友可以參考下
    2018-03-03

最新評論