zoukankan      html  css  js  c++  java
  • requests模块详解

    # 第一步:准备请求的相关数据
    # 接口地址
    url = "http://api.lemonban.com/futureloan/member/register"
    # 第二部, 准备请求的参数
    data = {
        "mobile_phone": "18189098765",
        "pwd": "lemonban"
    }
    # 第三部 添加请求头
    headers = {
        "X-Lemonban-Media-Type":"lemonban.v1"
    }
    # 第四部 发送请求,获得相应内容
    # 发送请求
    response = requests.post(url=url, json=data,headers=headers)
    # 打印返回内容
    print(response.text)
    # 打印请求头内容
    print(response.request.headers)
    
    
    """
    # 默认的请求头
    {'User-Agent': 'python-requests/2.21.0',
     'Accept-Encoding': 'gzip, deflate',
     'Accept': '*/*',
     'Connection': 'keep-alive', 
     'Content-Length': '50',
     'Content-Type': 'application/json'}
     
     # 自己添加过X-Lemonban-Media-Type字段的请求头
     {'User-Agent': 'python-requests/2.21.0', 
     'Accept-Encoding': 'gzip, deflate', 
     'Accept': '*/*', 
     'Connection': 'keep-alive',
     'X-Lemonban-Media-Type': 'lemonban.v1',
     'Content-Length': '50', 
     'Content-Type': 'application/json'}
     
    """

    requests 模块处理各种请求

    #       --------------------------post请求----------------------
    
    url = "http://httpbin.org/post"
    
    data = {"phone":"15567899876","pwd":"lemonban"}
    
    # 发送请求
    # 参数类型为:"Content-Type": "application/json",发送请求的时候,使用json来传递参数
    # response = requests.post(url=url,json=data)
    
    # 参数类型为:Content-Type": "application/x-www-form-urlencoded,使用data来进行传递
    response = requests.post(url=url,data=data)
    
    # 文件上传怎么传递参数:
    # 文件上传接口的参数类型为:"Content-Type": "multipart/form-data;文件应该使用files这个参数来进行传递
    # data = {"phone":"15567899876","pwd":"lemonban"}
    # file = {
    #     "pic": ("bj01.png", open(r"C:UsersMuSenDesktoppageimageico.png", "rb"), "image/png")
    # }
    #
    # response = requests.post(url=url, files=file,data=data)
    
    # 获取返回数据
    print(response.text)
    # ----------------------------get请求-----------------------------------
    # get请求的参数:查询字符串参数
    
    # 处理方式一:放到url地址后面
    # url = "http://httpbin.org/get?name=musen&age=18"
    
    # 处理方式二:使用params来进行传递
    # url1 = "http://httpbin.org/get"
    # data = {
    #     "name":"musen",
    #     "age":18
    # }
    # response = requests.get(url=url1,params=data)
    # print(response.text)

    requests 请求返回数据提取

    # 第一步:准备请求的相关数据
    # 接口地址
    url = "http://api.lemonban.com/futureloan/member/login"
    
    # 请求的参数
    data = {
        "mobile_phone": "18189098765",
        "pwd": "lemonban"
    }
    # 请求头
    headers = {
        "X-Lemonban-Media-Type": "lemonban.v1"
    }
    # 发送请求
    response = requests.post(url=url, json=data, headers=headers)
    
    # 打印返回内容
    # text属性:
    # res1 = response.text
    # print(res1,type(res1))
    # # 错误示范
    # res2 = eval(res1)
    # print(res2,type(res2))
    
    # json方法:将字符串中的json类型数据转换为对应的python值
    # 使用json方法的前提:返回数据必须是json格式的
    # res3 = response.json()
    # print(res3, type(res3))
    
    
    # content属性
    # res5 = response.content.decode("utf8")
    # print(res5, type(res5))
    

    关于请求内容获取和文件下载

    import requests
    
    # res = requests.get(url="http://www.lemonban.com/")
    # 自动识别内容的编码方式,有可能识别不准确出现乱码
    # print(res.text)
    
    # 手动自动编码方式,对页面内容进行解码
    # print(res.content.decode("utf-8"))
    
    
    # 文件下载
    res = requests.get(url="http://www.lemonban.com/images/upload/image/20190219/1550554131699.jpg")
    
    print(res.content)
    
    with open("lemon.png","wb") as f:
        f.write(res.content)
    

    提取请求返回的数据

    import jsonpath
    
    res = {'code': 0,
           'msg': 'OK',
           'data': {'id': 7800007,
                    'leave_amount': 0.0,
                    'mobile_phone': '18189098765',
                    'reg_name': 'xxx',
                    'reg_time': '2020-03-21 09:49:27.0',
                    'type': 1,
                    'token_info': {'token_type': 'Bearer',
                                   'expires_in': '2020-03-21 11:16:59',
                                   'token': 'eyJhbGciOiJIUzUxMiJ9.eyJtZW1iZXJfaWQiOjc4MDAwMDcsImV4cCI6MTU4NDc2MDYxOX0.-zjbWEbXF9qdfvW1Wn0640HZnv3Xkdrx0nDedRTcsgk_URgU185yA-e2SjQUvVfsjA-FpJSKSOF4jjB-Jyv47A'}},
           'data1': {'id': 7800007,
                     'leave_amount': 0.0,
                     'mobile_phone': '18189098765',
                     'reg_name': 'xxx',
                     'reg_time': '2020-03-21 09:49:27.0',
                     'type': 1,
                     'token_info': {'token_type': 'Bearer',
                                    'expires_in': '2020-03-21 11:16:59',
                                    'token': 'eyJhbGciOiJIUzUxMiJ9.eyJtZW1iZXJfaWQiOjc4MDAwMDcsImV4cCI6MTU4NDc2MDYxOX0.-zjbWEbXF9qdfvW1Wn0640HZnv3Xkdrx0nDedRTcsgk_URgU185yA-e2SjQUvVfsjA-FpJSKSOF4jjB-Jyv47A'}},
           'copyright': 'Copyright xxx © 2017-2019 xxxxx All Rights Reserved'}
    
    #  使用字典的键值对 提取方式去提取
    # # 提取用户的id
    # member_id = res["data"]["id"]
    # print(member_id)
    #
    # # 提取token值
    # token = res["data"]["token_info"]["token"]
    # print(token)
    
    
    # 使用jsonpath来提取
    member_id = jsonpath.jsonpath(res, "$.data..id")[0]
    print(member_id,type(member_id))
    
    token = jsonpath.jsonpath(res, "$.data1..token")[0]
    print(token)
    
    """
    . 代表直接子节点
    .. 代表子孙节点(不管层级)
    
    """
  • 相关阅读:
    解决"waitForCondition(LockCondition) timed out (identity=23, status=0). CPU may be pegged. trying again."问题
    解决:“MediaPlayer error (1, -2147483648)”问题
    EasyUI 验证
    ANT简明教程[转载]
    [转]Android开源框架ImageLoader的完美例子
    [转]Android精品开源项目整理
    【转】25个非常实用的jQuery/CSS3应用组件
    [转]8款实用的jQuery/CSS3最新插件应用
    解决IE6下浮层遮盖select刺穿的问题
    jQuery AJAX中文乱码处理
  • 原文地址:https://www.cnblogs.com/addicated/p/13194407.html
Copyright © 2011-2022 走看看