Python中requests模块的使用
一、request的功能
- 向IP地址发送网络请求
- 返回response响应对象,并进行操作
二、request各功能具体实现
1、向ip地址发送网络请求
- 发送 GET请求
- 发送 POST请求
发送GET请求:
说明:向某个网页发送请求,可以获得相应的数据
语法:
# 1. 导入request模块
import requests
# 2. 准备目标url地址 例如:百度
url = 'https://www.baidu.com'
# 3. 向目标url地址发送get请求
response = requests.get(url)
发送POST请求:
说明:向某个网页发送POST请求,以更安全的方式实现登录和注册
语法:
# 1. 导入request模块
import requests
# 2. 准备目标url地址 例如:百度
url = 'https://www.baidu.com'
# 3. 向目标url地址发送post请求
response = requests.post(url, data={
})
"""
post请求中带的参数:
data:请求具体的参数(例如:用户名、密码)
"""
GET和POST两个请求的区别:
GET | POST | |
---|---|---|
后退按钮/刷新 | 无害 | 数据会被重新提交(浏览器应该告知用户数据会被重新提交)。 |
书签 | 可收藏为书签 | 不可收藏为书签 |
历史 | 参数保留在浏览器历史中。 | 参数不会保存在浏览器历史中。 |
对数据长度的限制 | 当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。 | 无限制。 |
对数据类型的限制 | 只允许 ASCII 字符。 | 没有限制。也允许二进制数据。 |
安全性 | 与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。在发送密码或者其他敏感信息的时候决不能使用GET。 | POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。 |
可见性 | 数据在 URL 中对所有人都是可见的。 | 数据不会显示在 URL 中。 |
2、在发送请求时的参数
原因:一些网站使用了反扒技术,不做任何修饰的爬虫程序会被检测到并进行封禁,所以要在发送请求时进行修饰,以防被检测出来。
① request 请求时设置请求头(headers):
在发送网络请求时,未被修饰过的请求头(headers)中的 User-Agent 是可以被直接发现的,所以要使用自定义的headers来进行替换,headers以字典的形式保存
代码:
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36"
}
② 发送带查询参数的请求
在访问网页(例如百度)时,输入的查询参数的前面会有一个 ? ,这个问号后面的就是查询参数,每个参数之间使用 & 连接
例如: