李成笔记网

专注域名、站长SEO知识分享与实战技巧

每天一个 Python 库:requests HTTP 请求神器,用代码玩转网页

什么是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 — 精准提取网页结构中的信息

点击头像查看往期精彩文章!

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言