【笔记】Requests学习笔记

前言

Requests是一个Python HTTP库,在Apache License 2.0 许可证下发行。这个项目的目标是使HTTP请求更简单,更人性化。(维基百科

下载依赖

1
pip3 install requests

引入依赖

1
import requests

发送请求

<url>:请求地址

1
2
3
4
5
6
response = requests.get("<url>")
response = requests.post("<url>")
response = requests.put("<url>")
response = requests.head("<url>")
response = requests.delete("<url>")
response = requests.options("<url>")

定义请求头

1
2
3
response = requests.get(url="<url>", headers={
"key": "value"
})

定义Cookie

1
2
3
4
cookies = 
response = requests.get(url="<url>", cookies={
"key": "value"
})

定义是否允许重定向

  • 通过响应对象的history属性可以查看历史响应

allow_redirects:是否允许重定向

True:缺省值,允许重定向
False:不允许重定向

1
2
response = requests.get(url="<url>", allow_redirects=False)
response.history

定义超时时间

<num>:超时时间,单位秒

1
response = requests.get(url="<url>", timeout=<num>)

请求对象

获取请求头

1
result = request.headers

响应对象

获取响应字符编码

1
result = response.encoding

获取响应URL

1
result = response.url

获取响应状态码

1
result = response.status_code

获取相应头

1
result = response.headers

获取响应体

获取文本内容

1
result = response.text
直接解析JSON格式字符串为Python字典
1
result = response.json()

获取二进制内容

字节串
1
result = response.content
字节流
1
result = response.raw

获取响应历史

  • 查看重定向之前的响应
1
result = response.history

获取Cookies

1
result = response.cookies

检查响应是否成功

  • 如果响应不是2xx,则抛出异常
1
result = response.raise_for_status()

参数传递

Get

1
2
3
response = requests.get(url="<url>", params={
"key": "value"
})

POST

1
2
3
response = requests.post(url="<url>", json={
"key": "value"
})

文件上传

<file>:文件路径

1
2
3
response = requests.post(url="<url>", files={
"key": open("<file>", "rb")
})

文件下载

<url>:请求URL
<file>:文件存储路径

1
2
3
response = requests.get("<url>")
with open("<file>", "wb") as f:
f.write(response.content)

踩坑

  • 报错:Failed to establish a new connection

解决问题

  • 添加请求头
1
2
3
requests.get("", headers={
"Connection": "close"
})

完成

参考文献

哔哩哔哩——千锋教育网络安全学院
CSDN——郑德帅