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