• Request库 高级用法


    基于Request库进行搭建

    Request:

      request库是用来发送HTTP请求,接收HTTP响应的一个python库

      request库经常被用来,爬取,网站信息,用它来发起HTTP请求到网站,从HTTP响应消息中提取信息

      request不是python的标准库,属于第三方库,需要进行安装:pip install request

    用法:

    Cookie处理

    cookie处理方式
    手动处理cookie
    1.headers添加cookie键值对
    2.RequestsCookieJar
    3.Session类自动封装cookie
    自动处理cookie:Session 自动封装

    会话维持与模拟登陆

    HTTP无状态:
    使用requests模块get() 和 post()的请求的时候 相当于每次独立的打开一个浏览器去请求一个页面 这两次get 和post 它之间都不会产生联系 所以需要会话维持

    会话维持:Session对象
    from request import Session
    session = Session()
    res = session.get('https://baidu.com')

    文件上传

    request模块实现请求, post请求 -->向服务器提交数据
    import requests
    files ={
    'file': open('dasdsa.html', 'rb')
    }
    res = requests.get(url=url, files=files)

    SSL证书验证

     HTTP与HTTPS: HTTPS是HTTP的安全版本, HTTPS在HTTP的基础上多了SSL验证
    SSL证书验证
    1. requests 提供了证书验证功能, 发起HTTP请求时, 模块会检查SSL证书, 但检查的行为可以用 verify参数来控制。
    verify = False # 不检查SSL证书
    verify = True # 检查SSL证书

    2. 异常
    如果使用requests模块的SSL验证, 验证不通过会抛出异常, 此时可以将verify参数设置为Fales
    不抛异常, 但会出现警告


    import requests

    requests = requests.get('https://www.12306.cn', verify = False)
    print(response.status)

    # 异常: SSLError
    requests.exceptions.SSLError
    # avoiding warning
    requests.packages.urllib3.disable_warnings()
    # site:
    https://www.tutumanhua.com

    代理设置

    代理: 代理即代理ip
    代理ip是指在请求的过程中使用非本机ip进行请求, 避免大数据量频繁请求过程中出现ip封禁,
    使用 proxies 封装 ip
    反爬机制:
    原有请求过程:爬虫 -- 服务器 -- 爬虫
    使用代理过程: 爬虫-- 代理 -- 服务器 -- 代理 --爬虫
    1.Robots协议: 不遵守, 配置文件中进行设置
    2. UA检查: UA伪装
    3.IP封禁: 代理IP

    代理ip 分类:
    1. 透明代理ip: 请求时, 服务器知道请求的真实ip, 知道使用了代理
    2. 匿名代理ip: 请求时, 服务器知道使用了代理,但不知道请求的真实ip
    3. 高匿名代理:请求时, 服务器不知道请求使用了代理, 也不知道请求的真实ip

    超时设置

    超时设置
    由于网络情况不同,服务器配置的差异,以及处理并发的能力不同, 有时会出现某一个请求,他的响应时间非常的长,甚至都没有办法获取响应,而抛出异常了,哪requests模块发送请求就可以设置一个超时时间,在指定的时间内未获得响应就抛出异常。

    注意事项:
    1.如何选用超时: 确定数据量的大小, timeout有可能丢失数据, 在指定时间为获取响应 跳过 丢弃请求, 如果丢失的量不会对整个数据量产生巨大影响,那么可以采用。

  • 相关阅读:
    数据结构之线性顺序表ArrayList(Java实现)
    大话数据库技术之数据的检索
    JQuery表单元素过滤选择器
    字典序最小问题
    liferay中数据库表的解析未完
    转载如何实现portlet之间的传递参数
    SpringMVC学习笔记1
    深度优先搜索算法
    Ants-穷举算法
    三角形-穷举算法
  • 原文地址:https://www.cnblogs.com/sunzzc/p/13388970.html
Copyright © 2020-2023  润新知