美文网首页
Python之使用request发送请求

Python之使用request发送请求

作者: lily_5945 | 来源:发表于2020-08-25 14:40 被阅读0次

    Python3自带的http.client和urllib.request都能发送http请求,不过相对来说使用较麻烦,第三方库requests让发送请求更简单,支持自动编码解码,会话保持,长连等

    requests安装

    • Windows: 打开cmd命令行,输入pip install requests,等待安装完成即可
    • Linux: (建议使用Python3),终端中输入pip3 install requests,等待安装完成即可
    • Mac: (建议使用Python3), sudo python3 -m pip install requests,等待安装完成即可
      验证是否安装成功:
    • 打开命令行,输入python,在python shell环境下输入import requests 没有报错即安装成功
    • 在编辑器中输入 import requests 没有报错即安装成功

    requests的使用

    • 发送请求分三步
      1,组装请求: 请求可能包含url,params(url参数),data(请求数据),headers(请求头),cookies等,最少必须有url
      2,发送请求,获取响应:支持get,post等各种方法发送,返回的是一个响应对象
      3,解析响应: 输出响应文本
    1,发送一个带参数的post请求
    headers = {
        'content-type': 'application/x-www-form-urlencoded',
        'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'
    }
    URL = 'https://******123xue.cn/fs/uc/accessToken/create'
    # requests 允许使用 params 关键字参数,以一个字符串字典来提供这些参数。
    payload={
        'corpId': 'fa6aeddc25a848b4bd9e8b925d8c6182',
        'account': '******',
        'pwd': '******',
        'useMobile': False
     }
    res = requests.post(url=URL, data=payload, headers=headers)
    # 这里返回的是一个json字符串,所以转换成json格式,注意json后面带括号
    res = res.json()
    

    注:1,有些请求的headers可以不填,这里是业务需要。

    2,发送put、delete、head、optiions请求也很简单
    r = requests.put('http://yunweicai.com/put', data = {'key':'value'})
    
    r = requests.delete('http://yunweicai.com/delete')
    
    r = requests.head('http://yunweicai.com/get')
    
    r = requests.options('http://yunweicai.com/get')
    

    请求参数

    • url: 字符串格式,参数也可以直接写到url中
    • params:url参数,字典格式
    • data: 请求数据,字典或字符串格式
    • headers: 请求头,字典格式
    • cookies: 字典格式,可以通过携带cookies绕过登录
    • files: 字典格式,用于混合表单(form-data)中上传文件
    • auth: Basic Auth授权,数组格式 auth=(user,password)
    • timeout: 超时时间(防止请求一直没有响应,最长等待时间),数字格式,单位为秒

    响应解析

    • res.status_code: 响应的HTTP状态码
    • res.reason: 响应的状态码含义
    • req.text:响应的文本格式,按req.encoding解码
    • req.content: 响应的二进制格式
    • req.encoding: 解码格式,可以通过修改req.encoding='utf-8'来解决一部分中文乱码问题
    • req.apparent_encoding:真实编码,由chardet库提供的明显编码
    • req.json(): (注意,有括号),响应的json对象(字典)格式,慎用!如果响应文本不是合法的json文本,或报错
    • req.headers: 响应头
    • req.cookies: 响应的cookieJar对象,可以通过req.cookies.get(key)来获取响应cookies中某个key对应的值

    相关文章

      网友评论

          本文标题:Python之使用request发送请求

          本文链接:https://www.haomeiwen.com/subject/omaajktx.html