Home >Backend Development >Python Tutorial >How to use python requests post

How to use python requests post

王林
王林forward
2023-04-29 16:52:062031browse

    Python simulates the browser to send a post request

    import requests

    Format request.post

    request.post(url, data, json, kwargs) # post请求格式
    request.get(url, params, kwargs) # 对比get请求

    Sending a post request and passing parameters are divided into

    • Form (x-www-form-urlencoded)

    • json (application/json)

    data Parameters support dictionary format and string format. In dictionary format, use the json.dumps() method to convert data into a legal json format string. This method requires importing the json module;

    import json
    json.dumps(data) # data转换成json格式

    or assigning the data parameter to the post method. The json parameter must be in a legal json format, otherwise it will be useless. If there is a Boolean value, it must be lowercase and cannot have non-Unicode characters.

    Form post request (x-www-form-urlencoded)

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

    json type post request

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

    Use dictionary format to fill in parameters and convert to json when passing Format

    (1) json.dumps() method conversion

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

    (2) Assign data in dictionary format to the json parameter of the post method

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

    python requests post Solving several problems with data

    Recently I am using Requests to make a small program that automatically sends data. I am using the Requests library. During the use, I have some problems with the encoding of post data and I have to find a lot of information. Finally solved.

    The problem of urlencoding of post data

    When we usually post a dict data, requests will urlencode the data in the dict and then send it.

    But I found that the urlencode he used is UTF-8 encoding by default. What if my website program only supports gb2312 urlencode?

    You can introduce urllib.parse.urlencode in urllib for encoding.

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

    Avoiding the problem of data being urlencoded

    Sometimes we don’t want the data to be urlencoded, what should we do?

    Just concatenate it into a string in the post data. Of course, you should pay attention to the encoding of the string when splicing. For example, if it contains Chinese, you should set the encoding to utf-8 or gb2312.

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

    The above is the detailed content of How to use python requests post. For more information, please follow other related articles on the PHP Chinese website!

    Statement:
    This article is reproduced at:yisu.com. If there is any infringement, please contact admin@php.cn delete