首頁 > 後端開發 > Python教學 > python requests post如何使用

python requests post如何使用

王林
發布: 2023-04-29 16:52:06
轉載
2029 人瀏覽過

    python類比瀏覽器傳送post請求

    import requests
    登入後複製

    格式request.post

    request.post(url, data, json, kwargs) # post请求格式
    request.get(url, params, kwargs) # 对比get请求
    登入後複製

    傳送post請求傳參分為

    • 表單(x-www-form-urlencoded)

    • #json(application/json)

    data參數支援字典格式和字串格式,字典格式用json.dumps()方法把data轉換為合法的json格式字串次方法需要導入json模組;

    import json
    json.dumps(data) # data转换成json格式
    登入後複製

    或將data參數賦值給post方法的json參數,必須為合法json格式,否則沒用,如果有布林值要小寫,不能有非Unicode字元。

    表單方式的post請求(x-www-form-urlencoded)

    import requests
    url = "https://editor.net/"
    data = {"key": "value"} # 字典 外层无引号
    resp = requests.post(url,data=data)
    print(resp.text)
    登入後複製

    json類型的post請求

    import requests
    url = "https://editor.net/"
    data = '{"key": "value"}' # 字符串格式 
    resp = requests.post(url, data=data)
    print(resp.text)
    登入後複製

    使用字典格式填入參數,傳遞時轉換為json格式

    (1)json.dumps()方法轉換

    import requests
    import json
    url = "https://editor.net/"
    data = {"key": "value"}
    resp = requests.post(url, data=json.dumps(data))
    print(resp.text)
    登入後複製

    (2)將字典格式的data資料賦給post方法的json參數

    import requests
    import json
    url = "https://editor.net/"
    data = {"key": "value"}
    resp = requests.post(url, json=data)
    print(resp.text)
    登入後複製

    python requests post資料的幾個問題的解決

    最近在用Requests做一個自動發送資料的小程序,使用的是Requests庫,在使用過程中,對於post資料的編碼有一些問題,查找很多資料,終於解決。

    post資料的urlencode問題

    我們一般post一個dict資料的時候,requests都會把這個dict裡的資料進行urlencode,再進行傳送。

    但我發現他用的urlencode預設是UTF-8編碼,如果我的網站程式只支援gb2312的urlencode怎麼辦呢?

    可以引入urllib中的urllib.parse.urlencode進行編碼。

    from urllib.parse import urlencode
    import requests
     
    session.post('http://www.bac-domm.com',   data=urlencode({'val':'中国人民'}, encoding='gb2312'),  headers = head_content)
    登入後複製

    避免資料被urlencode的問題

    有時我們不希望資料進行urlencode,怎麼辦?

    只要在post的data裡拼接成字串就可以了,當然在拼接的時候要注意字串的編碼問題,比如說含有中文時,就應該把編碼設定為utf-8或gb2312

    vld = 'val:中国人民'
    session.post('http://www.bac-domm.com',   data=vld.encode('utf-8'),  headers = head_content)
    登入後複製

    以上是python requests post如何使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    相關標籤:
    來源:yisu.com
    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
    熱門教學
    更多>
    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板