当前位置: 面试刷题>> 如何使用 Python 的 requests 库发送 HTTP 请求?


在Python中,使用requests库发送HTTP请求是一种高效且广泛采用的方法。requests库以其简洁的API和强大的功能而著称,非常适合于处理网络请求。作为一名高级程序员,在面试中展示如何使用requests库,不仅要体现基本的GET和POST请求,还应涵盖错误处理、会话管理、请求头设置、超时控制以及使用HTTP代理等高级功能。以下是一个详细且结构化的回答,旨在展示如何在实践中应用这些高级特性。

引入requests

首先,确保已经安装了requests库。如果未安装,可以通过pip安装:

pip install requests

基本GET请求

发送GET请求是获取网络资源的基本方式。以下是一个简单的示例,展示如何发送GET请求并打印响应内容:

import requests

url = 'https://api.example.com/data'
response = requests.get(url)

# 检查响应状态码
if response.status_code == 200:
    print(response.text)  # 打印响应的文本内容
else:
    print(f"Failed to retrieve data: {response.status_code}")

POST请求

POST请求常用于提交数据给服务器,比如表单提交。以下是一个发送POST请求并携带JSON数据的示例:

url = 'https://api.example.com/submit'
data = {'key': 'value', 'another_key': 'another_value'}

response = requests.post(url, json=data)

if response.status_code == 200:
    print(response.json())  # 直接以JSON格式解析并打印响应内容
else:
    print(f"Failed to submit data: {response.status_code}")

错误处理

在处理网络请求时,错误处理是必不可少的。requests库通过抛出异常来处理网络错误和HTTP错误。你可以通过try-except块来捕获这些异常:

try:
    response = requests.get(url)
    response.raise_for_status()  # 如果响应状态码不是200系列,则抛出HTTPError异常
    print(response.text)
except requests.RequestException as e:
    print(f"An error occurred: {e}")

会话管理

使用requests.Session()可以跨请求保持某些参数,比如cookies和HTTP头部,这对于需要认证或状态保持的API非常有用:

with requests.Session() as session:
    session.headers.update({'Authorization': 'Bearer YOUR_TOKEN_HERE'})
    response = session.get(url)
    print(response.text)

设置请求头

有时候,服务器要求请求中包含特定的头部信息,如User-Agent或Content-Type。你可以通过传递headers参数来设置它们:

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
response = requests.get(url, headers=headers)

超时控制

在请求外部资源时,设置超时时间是一个好习惯,以避免程序无限期地等待响应:

response = requests.get(url, timeout=5)  # 设置超时时间为5秒

使用HTTP代理

在需要绕过网络限制或测试跨地域服务时,使用HTTP代理非常有用:

proxies = {
    'http': 'http://10.10.1.10:3128',
    'https': 'http://10.10.1.10:1080',
}

response = requests.get(url, proxies=proxies)

总结

以上内容展示了如何在Python中使用requests库进行HTTP请求,并涵盖了基本请求、错误处理、会话管理、请求头设置、超时控制和使用HTTP代理等高级功能。这些技能对于开发需要网络交互的应用程序至关重要。作为高级程序员,深入理解并灵活运用这些概念,能够显著提升代码的健壮性和效率。在码小课网站上,你还可以找到更多关于网络编程和requests库的深入教程和实战案例,帮助你不断提升自己的技能水平。

推荐面试题