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

How to use python requests post

王林
Release: 2023-04-29 16:52:06
forward
2035 people have browsed it

    Python simulates the browser to send a post request

    import requests
    Copy after login

    Format request.post

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

    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格式
    Copy after login

    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)
    Copy after login

    json type post request

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

    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)
    Copy after login

    (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)
    Copy after login

    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)
    Copy after login

    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)
    Copy after login

    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!

    Related labels:
    source:yisu.com
    Statement of this Website
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
    Popular Tutorials
    More>
    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template