【笔记】Requests学习笔记

前言

Requests学习笔记

下载依赖

1
pip3 install requests

请求对象的属性

获取请求头

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.history

获取Cookies

1
result = response.cookies

获取响应二进制

1
result = response.raw
1
result = response.raw.read

检查响应是否成功

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

发送请求

  • 支持的请求方法
    • GET:获取资源
    • POST:传输实体主体
    • PUT:传输文件
    • HEAD:获取响应报文首部
    • DELETE:删除文件
    • OPTIONS:查询支持的方法
    • TRACE:追踪路径
    • CONNECT:要求用隧道协议连接代理
    • LINK:建立和资源之间的连接
    • UNLINK:断开连接关系

<url>:请求地址

1
2
3
4
5
6
7
8
import requests

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
4
import requests

headers = {"User-Agent":""}
response = requests.get(url="<url>", headers=headers)

设置超时时间

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

1
2
3
4
5
6
import requests

try:
response = requests.get(url="<url>", timeout=<num>)
except Exception as e:
print(e)

传递参数

Get传递参数

1
2
3
4
import requests

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

POST传递参数

1
2
3
4
import requests

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

上传文件

<file>:文件路径

1
2
3
4
import requests

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

不允许自动重定向

  • 默认为允许重定向
  • 通过history属性可以查看历史响应
1
2
3
4
5
6
7
8
import requests

response = requests.post(url="<url>")
#response = requests.post(url="<url>", allow_redirects=True)
response.history

response = requests.post(url="<url>", allow_redirects=False)
response.history

设置Cookie信息

1
2
3
4
import requests

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

将二进制响应写入文件

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

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

踩坑

  • 报错:Failed to establish a new connection

解决问题

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

完成

参考文献

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