zoukankan      html  css  js  c++  java
  • python的requests模块参数详解

    import requests
    
    print(dir(requests))
    
    # 1、方法
    # ['ConnectTimeout', 'ConnectionError', 'DependencyWarning', 'FileModeWarning', 'HTTPError', 'NullHandler', 'PreparedRequest', 'ReadTimeout', 'Request', 'RequestException', 'RequestsDependencyWarning', 'Response', 'Session', 'Timeout', 'TooManyRedirects', 'URLRequired', '__author__', '__author_email__', '__build__', '__builtins__', '__cached__', '__cake__', '__copyright__', '__description__', '__doc__', '__file__', '__license__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__title__', '__url__', '__version__', '_check_cryptography', '_internal_utils', 'adapters', 'api', 'auth', 'certs', 'chardet', 'check_compatibility', 'codes', 'compat', 'cookies', 'delete', 'exceptions', 'get', 'head', 'hooks', 'logging', 'models', 'options', 'packages', 'patch', 'post', 'put', 'request', 'session', 'sessions', 'status_codes', 'structures', 'urllib3', 'utils', 'warnings']
    
    
    # 2、参数
    requests.get(
        url="http://www.baidu.com",
        headers="",
        cookies="",
        params={"k1":"v1","k2":"v2"},
        # url中传递的参数,效果如下
        # http://www.baidu.com?k1=v1&k2=v2
    )
    
    requests.post(
        url="",
        headers="",
        cookies="",
        data={
        },
        params={"k1": "v1", "k2": "v2"},
        # url中传递的参数,效果如下
        # http://www.baidu.com?k1=v1&k2=v2
    )
    
    # 我们可以通过data传递请求体,也可以通过json传递请求体
    
    data = {
            "username":"admin",
            "pwd":"admin"
           },
    
    # 则请求体中的数据为username=admin&pwd=admin
    
    
    # 参数json
    
    json = {
            "username":"admin",
            "pwd":"admin"
           },
    
    # 则请求体中的数据为{"username":"admin","pwd":"admin"}
    
    # 参数代理
    
        # 定义一个字典
    proxies = {
        "http":"61.24.25.21",
        "https":"http://65.21.24.1"
    }
    
    
    
    # http请求走http对应的地址,https请求走https对应的地址,在访问的请求中加一个proxies的参数
    l1 = requests.get(url="https://passport.lagou.com/login/login.html",
                      headers={
                          "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
                      },
                      proxies = proxies
                      )
    
    # 给代理加认证
    from requests.auth import HTTPProxyAuth
    proxies = {
        "http":"61.24.25.21",
        "https":"http://65.21.24.1"
    }
    auth = HTTPProxyAuth("username","passwd")
    
    # http请求走http对应的地址,https请求走https对应的地址,在访问的请求中加一个proxies的参数,在加一个参数auth,这个是登陆代理的用户名和密码
    l2 = requests.get(url="https://passport.lagou.com/login/login.html",
                      headers={
                          "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
                      },
                      proxies = proxies,
                      auth = auth
                      )
    
    
    # 参数文件上传,post方法发送请求,传递一个file的参数
    
    file= {
        "f1":open("a.txt","rb")
    }
    l3 = requests.post(url="https://passport.lagou.com/login/login.html",
                      headers={
                          "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
                      },
                      proxies = proxies,
                      auth = auth,
                      file = file
                      )
    
    
    # 可以设置上传文件的名称,前面的例子上传的文件的名称就是文件本身的名称
    file= {
        "f1":("new_file_name",open("a.txt","rb"))
    }
    l4 = requests.post(url="https://passport.lagou.com/login/login.html",
                      headers={
                          "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
                      },
                      proxies = proxies,
                      auth = auth,
                      file = file
                      )
    
    # 参数认证
    from requests.auth import HTTPBasicAuth
    from requests.auth import HTTPDigestAuth
    
    l5 = requests.get(url="https://passport.lagou.com/login/login.html",
                      headers={
                          "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
                      },
                      proxies = proxies,
                      auth = HTTPBasicAuth("admin","admin")
                      )
    
    
    # 超时参数
    l6 = requests.get(url="https://passport.lagou.com/login/login.html",
                      headers={
                          "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
                      },
                      timeout = 2
                      )
    
    # 超时时间为2s,2s连不上返回错误
    
    
    # 允许重定向
    l7 = requests.get(url="https://passport.lagou.com/login/login.html",
                      headers={
                          "user-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"
                      },
                      allow_redirects = False
                      )
    
    
    # stream大文件下载的参数,把文件一点一点的下载,如果这个值为false,则全部写到内存中了
    
    from contextlib import closing
    with closing(requests.get("http://ddddddd",stream=True)) as f:
        for i in f.iter_content():
            print(i)
    
    
    # cert,证书参数,告诉request去这个地方去下载cert
    l8 = requests.get(url="https://passport.lagou.com/login/login.html",cert="xxx/xxx/xxx/xxx/pem")
    
    l9 = requests.get(url="https://passport.lagou.com/login/login.html",cert=("xxx/xxx/xxx/xxx/pem","yyy/yyy/yyy.key"))
    
    
    # session,为我们自动带上cookies和请求头
    import requests
    session = requests.session()
    
    i1 = session.get(url="")
    
    
    i2 = session.post(
        url="",
        data={}
    )
    
    i3 = session.post()
    

      

    ----------------------------------------------------------

    通过request发送post请求,什么时候使用data参数,什么时候使用json参数呢,可以通过抓包来分析

    在chrom浏览器中,数据格式为Form Data,如果通过requests发送数据,则用data来发送数据

    在chrom浏览器中,数据格式为Request Payload,如果通过requests发送,则用json来发送数据

    如果传递的json格式,但是数据有中文呢就额可以使用下面的方式来发送数据

               data = bytes(json.dumps(
                    data_dict,
                    ensure_ascii=False
                ),encoding="utf-8")
    
  • 相关阅读:
    【转载】数据杂谈
    【转载】行走在网格之间:微博用户关系模型
    【转载】TalkingData首席金融行业专家鲍忠铁:18亿数据解读移动互联网
    【转载】大数据架构和模式
    【转载】Deep Learning(深度学习)学习笔记整理
    【转载】如何组建一支优秀的数据分析团队?
    【转载】Hadoop可视化分析利器之Hue
    【转载】关于烂代码的那些事
    【转载】6个用好大数据的秘诀
    【转载】如何一步步从数据产品菜鸟走到骨干数据产品
  • 原文地址:https://www.cnblogs.com/bainianminguo/p/10674396.html
Copyright © 2011-2022 走看看