ThankNeko's Blog ThankNeko's Blog
首页
  • 操作系统

    • Linux基础
    • Linux服务
    • WindowsServer笔记
    • Ansible笔记
    • Shell笔记
  • 容器服务

    • Docker笔记
    • Kubernetes笔记
    • Git笔记
  • 数据库服务

    • MySQL笔记
    • ELK笔记
    • Redis笔记
  • 监控服务

    • Zabbix笔记
  • Web服务

    • Nginx笔记
    • Tomcat笔记
  • 数据处理

    • Kettle笔记
  • Python笔记
  • Bootstrap笔记
  • C笔记
  • C++笔记
  • Arduino笔记
  • 分类
  • 标签
  • 归档
  • 随笔
  • 关于
GitHub (opens new window)

Hoshinozora

尽人事,听天命。
首页
  • 操作系统

    • Linux基础
    • Linux服务
    • WindowsServer笔记
    • Ansible笔记
    • Shell笔记
  • 容器服务

    • Docker笔记
    • Kubernetes笔记
    • Git笔记
  • 数据库服务

    • MySQL笔记
    • ELK笔记
    • Redis笔记
  • 监控服务

    • Zabbix笔记
  • Web服务

    • Nginx笔记
    • Tomcat笔记
  • 数据处理

    • Kettle笔记
  • Python笔记
  • Bootstrap笔记
  • C笔记
  • C++笔记
  • Arduino笔记
  • 分类
  • 标签
  • 归档
  • 随笔
  • 关于
GitHub (opens new window)
  • Python笔记

    • 基础知识

    • 并发编程

    • 爬虫笔记

      • 爬虫相关介绍
      • Requests模块
        • Requests模块
          • 介绍
          • 使用
        • UserAgent模块
          • 介绍
          • 使用
      • BeautifulSoup模块
      • Xpath模块
      • DrissionPage模块
      • JS逆向基础
    • 模块笔记

    • 后端笔记

  • C笔记

  • C++笔记

  • Arduino笔记

  • Web笔记

  • Dev
  • Python笔记
  • 爬虫笔记
Hoshinozora
2025-10-30
目录

Requests模块

# Requests模块

# 介绍

Requests是一个功能强大、简洁易用的第三方Python库,用于发送HTTP请求。

requests模块基于Python内置的urllib模块编写。

# 使用

# 安装与导入

# 安装requests模块
pip install requests

# 导入模块
import requests
1
2
3
4
5

# 模拟请求

requests模块提供request函数供我们实现模拟请求,还提供以请求方式命名的函数方便我们调用。

requests.request()、requests.get()、requests.post()、requests.put()、requests.delete()等。

# request函数

requests.request() 用于发起HTTP/HTTPS模拟请求,并返回响应体对象。

核心参数:

method:指定HTTP请求方法,字符串类型,如GET、POST、PUT、DELETE等,必填。

url:请求的目标URL地址,字符串类型,必填。

可选参数:

params:附加参数,字典、元组列表、字节序列。

会将字典转化为形如?key1=value1&key2=value2的格式,并添加到URL后面。

data:请求体数据,字典、字节序列、文件对象。

同时指定data和json参数时,会优先使用json。

json:JSON格式的请求体数据,支持序列化的类型都行。

会自动序列化数据并设置请求头Content-Type: application/json。

同时指定data和json参数时,会优先使用json。

headers:请求头数据,字典类型。

可以用于伪装请求头,例如{'User-Agent': 'Chrome/10'}等。

cookies:发送cookie信息,字典或CookieJar对象。

例如{'session_id': '12345abcde', 'user': 'john_doe'}。

如果headers参数中设置Cookie字段,则优先使用headers中设置的Cookie值。

files:上传文件,字典类型。

例如``{'file': open('data.xls', 'rb')}`。

auth:HTTP基础认证,元组类型。

例如('username', 'password')。

timeout:设置请求超时时间,单位秒,数字或元组类型。

如果提供数字类型,则表示接收数据的超时时间,例如:2。

如果提供元组类型,则其第一个元素值表示连接超时时间,第二个元素值表示接收数据的超时时间,例如:(2, 3)。

allow_redirects:是否跟随重定向跳转,布尔类型,默认为True。

proxies:配置代理服务器,字典类型。

格式{"协议":"协议://IP:端口号"}

例如{'http': 'http://10.10.1.10:3128'}。

verify:是否开启SSL证书验证,布尔类型,默认为True。

为True时,表示HTTPS请求会验证SSL证书。

为False时,会忽略证书验证,但会引发警告。

stream:是否延迟下载响应内容,用于处理大文件,布尔类型。

cert:客户端SSL证书认证,证书路径或元组。

证书和密钥文件通常应为PEM格式。

例如'./cert/crt.pem'或('./cert/client.crt', './cert/client.key')。

# get函数

requests.get() 以get方式请求目标URL,然后返回响应体对象。

他实际就是调用request("get", ...)函数。

其他参数和reqeust函数一致。

# post函数

requests.post() 以post方式请求目标URL,然后返回响应体对象。

他实际就是调用request("post", ...)函数。

其他参数和reqeust函数一致。

# Response对象

response.url:响应资源的URL。

发生重定向时,响应资源的URL可能和原始请求的URL不一致。

response.history:查看历史URL,可以查看跳转前的历史URL。

response.status_code:响应的状态码。

response.headers:响应的头信息,返回字典对象。

response.cookies:响应的cookie信息,返回CookieJar对象。

response.cookies.get_dict():将cookie信息转换为字典形式。

response.cookies.items():将cookie信息转换为列表形式,每对键值以元组包裹。

response.content:响应体的二进制内容,适用于处理图像、视频等非文本类型的响应。

response.iter_content(chunk_size):该方法可以迭代获取响应数据,需要指定每次获取多少字节。一般在文件过大时使用,以提高内存利用效率。

例如:

for chunk in response.iter_content(1024): print(chunk) print("----------")

response.text:响应的内容,会将内容解码成字符串返回。

通常是服务器返回的HTML文本。

response.encoding:页面编码方式。

可以通过修改进行转码,例如:response.encoding = "utf-8"

response.json():将响应的内容进行JSON反序列化并返回。

# Session对象

Session可以帮助我们自动管理与网站交互时产生的Cookies,适用于需要用到Cookies的场景。

# 创建session对象
session = requests.Session()

# 使用session对象发起请求,会自动保存响应的Cookies信息
res = session.request(...)
res = session.get(...)
res = session.post(...)


# 自定义HTTPAdapter
from requests.adapters import HTTPAdapter
# 设置HTTP请求超时重试次数为3
session.mount("http://", HTTPAdapter(max_retries=3))
# 设置HTTPS请求超时重试次数为3
session.mount("https://", HTTPAdapter(max_retries=3))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 异常类型

requests模块的异常类型定义在requests.exceptions中,例如:ConnectionError、SSLError、RetryError、ReadTimeout等。

# UserAgent模块

# 介绍

UserAgent模块可以随机生成UserAgent信息,帮助我们更方便的伪装请求头。

# 使用

# 安装与导入

# 安装模块
pip install fake-useragent

# 导入模块
from fake_useragent import UserAgent
1
2
3
4
5

# 随机生成UA标识

user_agent = UserAgent().random

# 然后直接放到请求头里即可
headers = {
    'User-Agent': UserAgent().random,
}
1
2
3
4
5
6
#爬虫#requests
爬虫相关介绍
BeautifulSoup模块

← 爬虫相关介绍 BeautifulSoup模块→

最近更新
01
Vue路由
12-09
02
FastAPI实现用户管理
11-23
03
Tortoise ORM
11-23
更多文章>
Theme by Vdoing | Copyright © 2022-2026 Hoshinozora | MIT License
湘ICP备2022022820号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式