深入了解 Python 中的 Requests 库

目录

  1. Requests 简介
  2. 安装 Requests
  3. 发送 HTTP 请求
  4. 请求参数
  5. 处理响应
  6. 高级用法
  7. 错误处理
  8. 实战案例
  9. 总结

Requests 简介

Requests 是一个用于发送 HTTP 请求的 Python 库,旨在让 HTTP 请求变得更加简单和优雅。与传统的 Python 标准库 urllib 相比,Requests 提供了更加人性化的 API,使得处理 HTTP 请求变得更加直观和方便。以下是 Requests 的一些主要特点:

  • 支持所有主流的 HTTP 请求方法(GET、POST、PUT、DELETE 等)。
  • 提供简单的 API 来处理 URL 参数、请求头、请求体等。
  • 自动处理 Cookies 和会话。
  • 支持文件上传和下载。
  • 内置 SSL 证书验证功能。
  • 提供简单的错误处理机制。

安装 Requests

在开始使用 Requests 之前,需要先安装该库。可以使用 pip 来安装:

pip install requests

安装完成后,可以通过以下方式来导入 Requests 库:

import requests

发送 HTTP 请求

Requests 支持所有主流的 HTTP 请求方法。以下是一些常见的请求方法及其示例。

GET 请求

GET 请求用于从服务器获取数据。以下是一个简单的 GET 请求示例:

import requests

response = requests.get('https://api.github.com')
print(response.status_code)
print(response.text)

在上述代码中,requests.get 方法用于发送 GET 请求,response 对象包含了服务器的响应。

POST 请求

POST 请求用于向服务器发送数据。以下是一个简单的 POST 请求示例:

import requests

payload = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://httpbin.org/post', data=payload)
print(response.status_code)
print(response.text)

在上述代码中,requests.post 方法用于发送 POST 请求,data 参数用于传递请求体数据。

其他 HTTP 请求

除了 GET 和 POST 请求,Requests 还支持其他 HTTP 请求方法,如 PUT、DELETE、HEAD 等。以下是一个 PUT 请求的示例:

import requests

payload = {'key1': 'value1', 'key2': 'value2'}
response = requests.put('https://httpbin.org/put', data=payload)
print(response.status_code)
print(response.text)

请求参数

在发送 HTTP 请求时,可以传递各种参数来定制请求,如 URL 参数、请求头、请求体等。

URL 参数

URL 参数(查询字符串)可以通过 params 参数来传递。以下是一个示例:

import requests

params = {'key1': 'value1', 'key2': 'value2'}
response = requests.get('https://httpbin.org/get', params=params)
print(response.status_code)
print(response.url)
print(response.text)

请求头

可以通过 headers 参数来设置自定义的请求头。以下是一个示例:

import requests

headers = {'User-Agent': 'Mozilla/5.0'}
response = requests.get('https://httpbin.org/get', headers=headers)
print(response.status_code)
print(response.text)

请求体

对于 POST、PUT 等请求,可以通过 datajson 参数来传递请求体数据。以下是一个示例:

import requests

# 传递表单数据
payload = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://httpbin.org/post', data=payload)
print(response.status_code)
print(response.text)

# 传递 JSON 数据
json_payload = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://httpbin.org/post', json=json_payload)
print(response.status_code)
print(response.text)

处理响应

在发送请求后,可以通过 response 对象来处理服务器的响应。

响应内容

可以通过 response.text 获取响应的文本内容,通过 response.json 获取 JSON 格式的响应内容。以下是一个示例:

import requests

response = requests.get('https://api.github.com')
print(response.text)  # 获取文本内容
print(response.json())  # 获取 JSON 内容

响应状态码

可以通过 response.status_code 获取响应的状态码。以下是一个示例:

import requests

response = requests.get('https://api.github.com')
print(response.status_code)

响应头

可以通过 response.headers 获取响应头。以下是一个示例:

import requests

response = requests.get('https://api.github.com')
print(response.headers)

高级用法

Requests 提供了许多高级功能,如会话对象、文件上传、超时设置和 SSL 证书验证等。

会话对象

会话对象用于在多次请求之间保持某些参数,如 Cookies。以下是一个示例:

import requests

session = requests.Session()
session.get('https://httpbin.org/cookies/set/sessioncookie/123456789')
response = session.get('https://httpbin.org/cookies')
print(response.text)

文件上传

可以通过 files 参数来上传文件。以下是一个示例:

import requests

files = {'file': open('example.txt', 'rb')}
response = requests.post('https://httpbin.org/post', files=files)
print(response.status_code)
print(response.text)

超时设置

可以通过 timeout 参数来设置请求的超时时间。以下是一个示例:

import requests

try:
    response = requests.get('https://httpbin.org/delay/3', timeout=2)
    print(response.status_code)
except requests.Timeout:
    print('请求超时')

SSL 证书验证

Requests 默认会验证 SSL 证书,可以通过 verify 参数来禁用此功能。以下是一个示例:

import requests

response = requests.get('https://expired.badssl.com/', verify=False)
print(response.status_code)

错误处理

Requests 提供了简单的错误处理机制,可以通过捕获异常来处理请求错误。以下是一个示例:

import requests

try:
    response = requests.get('https://httpbin.org/status/404')
    response.raise_for_status()  # 如果响应状态码不是 200,会抛出 HTTPError 异常
except requests.HTTPError as e:
    print(f'HTTP error occurred: {e}')
except Exception as e:
    print(f'Other error occurred: {e}')
else:
    print('Success!')

实战案例

抓取网页数据

以下是一个抓取网页数据的示例:

import requests
from bs4 import BeautifulSoup

url = 'https://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
print(soup.title.text)

调用 REST API

以下是一个调用 REST API 的示例:

import requests

url = 'https://api.github.com/users/octocat'
response = requests.get(url)
data = response.json()
print(data['name'])
print(data['public_repos'])

总结

本文详细介绍了 Python 中 Requests 库的使用方法和一些高级技巧。Requests 库是一个非常强大的 HTTP 请求工具,提供了简洁和人性化的 API,使得处理 HTTP 请求变得更加简单和直观。希望本文能帮助读者更好地理解和掌握 Requests 库,解决在实际开发中遇到的问题。如果你有任何疑问或需要进一步的帮助,欢迎随时联系我。

  • 21
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一休哥助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值