美文网首页
requests教程

requests教程

作者: 极光火狐狸 | 来源:发表于2018-07-03 02:27 被阅读85次

    概述

    Requests 是Python的第三方HTTP库。
    可以用它来完成大部分HTTP协议行为, 例如: HEAD、GET、POST、PUT、PATCH、DELETE等。
    也可以用它来完成大部分浏览器行为, 例如: 登陆、保持状态、登出、302跳转。
    甚至可以用它来完成一些浏览器不允许的行为, 例如: 跨域、伪造、接口测试。

    用requests来完成大部分HTTP协议行为

    获取数据: GET

    import requests
    
    response = requests.get("https://www.baidu.com/s?wd=python")
    # or 
    # response = requests.get("https://www.baidu.com/s", params={"wd": "python"})
    
    print(u"请求的URL: ", response.request.url)
    print(u"请求的参数(GET方法专属): ", response.request.path_url)
    print(u"请求的Method: ", response.request.method)
    print(u"请求的头: ", response.request.headers)
    
    print(u"响应状态码: ", response.status_code)
    print(u"响应头: ", response.headers)
    print(u"响应内容: ", response.content)
    
    print(u"请求所带的cookie和响应所返回的cookie集合: ", response.cookies)
    print(u"总共耗时: ", response.elapsed)
    

    requests 对象介绍(常用)

    requests对象是这个库的最高级抽象, 它把 url_encoding、cookie、data、 headers、cookies 统统隐藏起来了.
    通过这种最简单的方式帮我们把90%的代码工作都节省掉了, 就剩几个标准协议的名称供我们使用(封装到只外露几颗牙齿).

    requests 对象常用方法

    方法名 使用方法 说明
    get requests.get() 获取数据
    post requests.post() 创建数据
    put requests.put() 当数据存在时更新数据, 当数据不存在是创建数据
    patch requests.patch() 更新数据
    delete requests.delete() 删除数据

     

    response 对象介绍(常用)

    response对象是一个数据集合体, 这个对象肥的流油, 随便一掐都是数据,
    这么叼的一个对象你怎么可以不用dir(response)来细细品尝一下呢?

    response 对象常用方法

    注意: 这些都是属性值, 不是方法, 不需要使用括号.

    方法名 使用方法 数据类型 说明
    status_code response.status_code int 返回状态
    content response.content bytes 返回内容
    headers response.headers dict 返回请求头
    cookies response.cookies RequestsCookieJar Object
    elapsed response.elapsed str 请求到响应结束总耗时
    reason response.reason str 当status_code小于400时, 返回OK; 当大于等于400时, 返回错误信息
    request response.request PreparedRequest Object 发情请求所使用的数据对象

     

    RequestsCookieJar 对象介绍(不常用)

    RequestsCookieJar 对象是一个cookie集合体, 它包含多个cookie数据内容.
    RequestsCookieJar 对象是对python 的 cookielib.CookieJar 库进行二次封装的一个对象.

    由于这个对象不常用, 我就不多说了.

    RequestsCookieJar 对象常用方法

    方法名 使用方法 数据类型 说明
    get response.cookies.get() str 获取一个cookie值
    keys response.cookies.keys() list 获取所有cookie的name
    values response.cookies.values() list 获取所有cookie的name对应的value
    get_dict response.cookies.get_dict() dict 获取一个完整的cookie键值字典
    set_cookie RequestsCookieJar().set_cookie() 写入一个cookie

     

    PreparedRequest 对象介绍(不常用)

    PreparedRequest 对象是针对get、post、put、patch、delete请求提供的参数
    进行加工处理, 以确保目标服务器能正常识别这些数据.

    由于这个对象不常用, 我就不多说了.

    RequestsCookieJar 对象流程

    步骤 对象 说明
    1 PreparedRequest().prepare_method() 将method字符串转换成大写, 并保存有效的 method.
    2 PreparedRequest().prepare_url() 检查url的 scheme(http|https)、host、uri 的合法性 和 保存有效的url.
    3 PreparedRequest().prepare_headers() 检查headers的合法性 和 保存有效的headers.
    4 PreparedRequest().prepare_body() 检查body的合法性 和 保存有效的body.
    5 PreparedRequest().prepare_content_length() 计算出body的数据长度(Content-Length) 和 保存该值.
    6 PreparedRequest().prepare_auth() 检查是否提供认证数据(auth; 账号密码) 和 保存该值.
    7 PreparedRequest().prepare_cookies() 检查cookie的合法性 和 保存cookie.

     

    Session 对象介绍(常用且重要)

    Session 是一个线程安全的连接池, 它的作用是维护一个cookie集合, 帮你保留你所有请求痕迹(即所有服务器set-cookie的数据), 通过这种方式可以让你无间断地进行数据交互(而不是每个请求都需要单独认证一次!).

    Session 的使用方法跟requests基本保持一致, 同时支持多线程并发请求, 因为它是线程安全的连接池(会话池).

    from requests import sessions
    
    session = sessions.Session()
    response = session.get("https://www.baidu.com/s?wd=python")
    # or
    # requests = sessions.Session()
    # response = requests.get("https://www.baidu.com/s", params={"wd": "python"})
    
    print(u"请求的URL: ", response.request.url)
    print(u"请求的参数(GET方法专属): ", response.request.path_url)
    print(u"请求的Method: ", response.request.method)
    print(u"请求的头: ", response.request.headers)
    
    print(u"响应状态码: ", response.status_code)
    print(u"响应头: ", response.headers)
    print(u"响应内容: ", response.content)
    
    print(u"请求所带的cookie和响应所返回的cookie集合: ", response.cookies)
    print(u"总共耗时: ", response.elapsed)
    

    相关文章

      网友评论

          本文标题:requests教程

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