什么是requests
requests 是 Python 中最受欢迎的第三方库之一,用于发送各种 HTTP 请求(GET、POST、PUT、DELETE 等)。无论是爬虫、接口测试,还是后台数据采集,它都表现稳定高效。
学习本来就不是一蹴而就的事,不过只要你肯练、敢用,坚持一阵子,你一定能看到变化!
快速安装
pip install requests
一、GET 请求:获取网页数据
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :Fish
@File :D18.py
@Date :2025/6/16 18:58
@Author : malijie
"""
import json
import requests
requests.packages.urllib3.disable_warnings()
url = "https://httpbin.org/get"
params = {
"name": "Trump",
"party": "Republican",
"age": 79
}
response = requests.get(url, params=params, verify=False)
print(response.status_code) # 200
print(json.dumps(json.loads(response.text), indent=4, sort_keys=True, ensure_ascii=False))
适用场景:网页抓取、API 查询、数据分析前的采集。
二、POST 请求:提交表单/发送数据
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :Fish
@File :D18.py
@Date :2025/6/16 18:58
@Author : malijie
"""
import json
import requests
requests.packages.urllib3.disable_warnings()
url = "https://httpbin.org/post"
params = {
"name": "Trump",
"party": "Republican",
"age": 79
}
data = {"username": "admin", "password": "123456"}
response = requests.post(url, params=params, data=data, verify=False)
print(response.status_code) # 200
print(json.dumps(json.loads(response.text), indent=4, sort_keys=True, ensure_ascii=False))
适用场景:模拟登录、表单提交、自动化测试。
三、设置请求头、Cookie
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :Fish
@File :D18.py
@Date :2025/6/16 18:58
@Author : malijie
"""
import json
import requests
requests.packages.urllib3.disable_warnings()
url = "https://httpbin.org/headers"
headers = {"User-Agent": "MyPythonBot/1.0"}
cookies = {"sessionid": "fake-session-id"}
params = {
"name": "Trump",
"party": "Republican",
"age": 79
}
data = {"username": "admin", "password": "123456"}
response = requests.get(url, params=params, data=data, verify=False, headers=headers, cookies=cookies)
print(response.status_code) # 200
print(json.dumps(json.loads(response.text), indent=4, sort_keys=True, ensure_ascii=False))
适用场景:伪装成浏览器、保持会话。
四、下载文件(如图片、PDF)
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :Fish
@File :D18.py
@Date :2025/6/16 18:58
@Author : malijie
"""
import json
import requests
requests.packages.urllib3.disable_warnings()
url = "https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png"
response = requests.get(url)
with open("Baidu.png", "wb") as f:
f.write(response.content)
小技巧:使用 .content 获取二进制内容,用于文件写入。
五、异常处理与超时设置
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :Fish
@File :D18.py
@Date :2025/6/16 18:58
@Author : malijie
"""
import json
import requests
requests.packages.urllib3.disable_warnings()
def test(timeout):
url = "https://httpbin.org/delay/3"
try:
response = requests.get(url, timeout=timeout, verify=False)
print(f"timeout= {timeout},\n{json.dumps(json.loads(response.text), indent=4, sort_keys=True, ensure_ascii=False)}")
except requests.exceptions.Timeout:
print(f"timeout= {timeout},请求超时!")
if __name__ == '__main__':
timeout_1 = 3
timeout_2 = 5
test(timeout_1)
test(timeout_2)
防止请求卡住、适合放在定时任务或爬虫脚本中。
六、接口自动化测试场景示例(结合断言)
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :Fish
@File :D18.py
@Date :2025/6/16 18:58
@Author : malijie
"""
import json
import requests
requests.packages.urllib3.disable_warnings()
def test_status():
url = "https://httpbin.org/status/200"
response = requests.get(url, verify=False)
print(response.status_code)
assert response.status_code == 200
def test_status2():
url = "https://httpbin.org/status/200"
response = requests.get(url, verify=False)
print(response.status_code)
assert response.status_code == 404
requests 是接口测试框架如 pytest 或 unittest 的好搭档。
总结速查表
功能 | 用法 | 说明 |
GET 请求 | requests.get(url, params) | 获取网页/接口数据 |
POST 请求 | requests.post(url, data) | 提交数据 |
请求头设置 | headers={'User-Agent':...} | 伪装浏览器 |
设置超时 | timeout=5 | 防止阻塞 |
下载文件 | response.content | 保存图片/文件 |
获取 JSON | response.json() | 自动解析接口返回值 |
点赞关注不迷路,后续更新更多自动化测试经验,我们一起成长!
欢迎评论区留言你最常用的 JSON 场景或踩过的坑~
下期预告:beautifulsoup4 — 精准提取网页结构中的信息
点击头像查看往期精彩文章!