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有可能丢失数据, 在指定时间为获取响应 跳过 丢弃请求, 如果丢失的量不会对整个数据量产生巨大影响,那么可以采用。

posted @ 2020-07-28 08:29  老祝头  阅读(800)  评论(0编辑  收藏  举报