一、requests库安装
1.1 安装
- 方法1
pip install requests从国外网站下载库安装
- 方法2
pip installrequests -i 镜像地址 镜像地址网站: 豆瓣镜像:https://pypi.douban.com/simple/ 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 华中理工大学:http://pypi.hustunique.com/ 山东理工大学:http://pypi.sdutlinux.org/
pip list列表查看,能看到安装的库名,说明安装成功
pip show 库名查询库的版本及其他相关信息。说明安装成功
1.3 http请求方式
resp = requests.请求方法(url='URL地址', params={k:v}, headers={k:v},
data=https://www.it610.com/article/{k:v}, json={k:v}, cookies='cookie数据(如:令牌)')
请求方法:
get请求 - get方法
post请求 - post方法
put请求 - put方法
delete请求 - delete方法url:要访问的地址- string类型
params:查询参数- 字典
headers:请求头- 字典
data:表单 格式请求体数据- 字典- tpshop商城项目
json:json 格式请求体数据- 字典- ihrm项目cookies:用来传递cookies 【了解】resp:代表响应结果。
二、 Cookie
- cookie 是工程师,针对 http协议 是无状态这一特征,设计的一种技术。
- cookie 将数据保存在浏览器端。默认存储空间大小为 4k(可以修改)。
- cookie 中的数据,用户和随意获取,没有安全性可言。
- cookie 中存放的数据类型,受浏览器限制。
- cookie 中大多存放于网络通信相关的不敏感数据信息。提高访问速度。如:用户名、登录状态等。
- 令牌校验
- cookie+session
文章图片
# 导包
import requests
# 发送获取验证码 get 请求,指定url, 获取响应结果
resp1 = requests.get(url="http://xxxxxx/index.php?m=Home&c=user&a=verify")
# 从响应结果中,提取cookie值
my_cookie = resq1.cookies
# 发送登录post请求,携带cookie值,获取结果
resp2 = requests.post(url="http://xxxxxxxxx/index.php?m=Home&c=User&a=do_login",
data=https://www.it610.com/article/{"username": "13812345678",
"password": "123456",
"verify_code": "8888"},
cookies=my_cookie
)
# 打印,查看登录结果
print("登录结果为:", resp2.json())# 发送查看我的订单get请求,携带cookie值,获取结果
resp3 = requests.get(url="http://xxxxxxxx/Home/Order/order_list.html",
cookies=my_cookie)# 打印,查看我的订单页面
print(“我的订单页面”, resp3.text)
三、 Session(会话)
3.1 概念
从客户端登录服务器开始,直到客户端退出登录,所产生的所有通信数据,保存在 session中
3.2 特征
- **session 将数据存在服务器端**
- **session 使用服务器存储空间,没有大小限制。**
- **session 支持的数据类型,受服务器主机影响。几乎支持所有数据类型。**
- **session 中的数据,大都采用 加密、转码存储。安全性较高。**
3.3 结论 Session自动管理Cookie:原因,cookie中的数据,都是由 session 提供的。
3.4 案例 eg:用session 实现登录商城
步骤:
1. 创建 session 实例。session = requests.Session()**
2. 使用 session 实例 发送 获取验证码 get 请求。( 不需要提取 cookie )
3. 使用 同一个session 实例 发送 登录 post 请求。( 不需要携带 cookie )
# 1. 导包
import requests# 2. 创建 session 实例
session = requests.Session()# 3. 借助 session实例,发送 获取验证码 get请求,指定url(不需要提取cookie)
session.get(url="http://xxxxxxxx/index.php?m=Home&c=User&a=verify")# 4. 借助 同一个session实例,发送 登录 post请求,指定 url、请求头、请求体(不需要携带cookie)
resp2 = session.post(url="http://xxxxxxxxxx/index.php?m=Home&c=User&a=do_login",
data=https://www.it610.com/article/{"username": "13812345678", "password": "123456", "verify_code": "8888"})
print("登录结果:", resp2.json())
四、 Cookie 和 Session 区别
- 数据存储位置:
- Cookie 存储在 浏览器端
- Session 存储在 服务器端
- 安全性:
- Cookie 直接存储在浏览器,可以任意获取,没有安全性可言。
- Session 存储在 服务器端,采用 加密、转码形式存储数据,安全性较高。
- 数据类型
- Cookie 直接存储在浏览器,支持测试数据类型受浏览器限制
- Session 存储在 服务器端,服务器就是一台主机。因此几乎支持所有的数据类型。
- 大小:
- Cookie 默认大小 4k(可调)
- Session 直接使用服务器存储。没有大小限制。
推荐阅读
- Gitlab配置webhook报错(Urlis blocked: Requests to the local network are not allowed解决)
- Python "爬虫"出发前的装备之简单实用的 Requests 模块