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


在Python中,使用`requests`库发送HTTP请求是一种高效且广泛采用的方法。`requests`库以其简洁的API和强大的功能而著称,非常适合于处理网络请求。作为一名高级程序员,在面试中展示如何使用`requests`库,不仅要体现基本的GET和POST请求,还应涵盖错误处理、会话管理、请求头设置、超时控制以及使用HTTP代理等高级功能。以下是一个详细且结构化的回答,旨在展示如何在实践中应用这些高级特性。 ### 引入`requests`库 首先,确保已经安装了`requests`库。如果未安装,可以通过pip安装: ```bash pip install requests ``` ### 基本GET请求 发送GET请求是获取网络资源的基本方式。以下是一个简单的示例,展示如何发送GET请求并打印响应内容: ```python 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数据的示例: ```python 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块来捕获这些异常: ```python 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非常有用: ```python 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`参数来设置它们: ```python 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) ``` ### 超时控制 在请求外部资源时,设置超时时间是一个好习惯,以避免程序无限期地等待响应: ```python response = requests.get(url, timeout=5) # 设置超时时间为5秒 ``` ### 使用HTTP代理 在需要绕过网络限制或测试跨地域服务时,使用HTTP代理非常有用: ```python 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`库的深入教程和实战案例,帮助你不断提升自己的技能水平。
推荐面试题