Requests 是一个简单、易用的 HTTP 库,它使 Python 发送 HTTP 请求变得非常简单。使用 Requests 可以发送几乎所有类型的 HTTP 请求,并且处理响应数据也十分方便。
安装 Requests
在开始使用 Requests 之前,你需要先安装它。可以使用 pip 来安装 Requests:
pip install requests
安装完成后,你可以通过 import requests
在你的项目中引入这个库。
发送请求
GET 请求
GET 请求是最简单的请求类型,用于从服务器获取资源。可以通过调用 requests.get()
函数来发送 GET 请求:
import requests response = requests.get('https://api.github.com') print(response.status_code) print(response.headers['Content-Type'])
上述代码向 GitHub 的 API 发送了一个 GET 请求,并打印了响应的状态码和 Content-Type。
POST 请求
POST 请求通常用于向服务器提交数据。可以通过调用 requests.post()
函数来发送 POST 请求:
-- -------------------- ---- ------- ------ -------- ---- - - ------- --------- ------- -------- - -------- - ---------------------------------------- ---------- --------------------
上述代码向 httpbin.org 的 POST 接口发送了一个请求,并传递了一些表单数据。然后打印了响应的内容。
其他请求方法
除了 GET 和 POST,Requests 还支持其他几种 HTTP 方法,如 PUT, DELETE, HEAD 等。可以通过调用相应的方法名来发送这些请求:
import requests response = requests.put('http://httpbin.org/put', data={'key': 'value'}) response = requests.delete('http://httpbin.org/delete') response = requests.head('http://httpbin.org/get') response = requests.options('http://httpbin.org/get')
处理响应
获取响应内容
可以通过 response.text
或 response.content
来获取响应的内容:
response.text
返回的是字符串形式的响应内容。response.content
返回的是字节形式的响应内容。
import requests response = requests.get('http://httpbin.org/get') print(response.text) # 字符串形式 print(response.content) # 字节形式
解析 JSON 响应
如果服务器返回的是 JSON 数据,可以通过 response.json()
方法将 JSON 数据解析为 Python 字典:
import requests response = requests.get('http://httpbin.org/get') json_data = response.json() print(json_data)
获取响应头信息
可以通过 response.headers
属性来获取响应的头部信息:
import requests response = requests.get('http://httpbin.org/get') headers = response.headers print(headers)
添加请求参数
可以在 URL 中添加查询参数,或者使用 params
参数来传递参数:
import requests payload = {'key1': 'value1', 'key2': 'value2'} response = requests.get('http://httpbin.org/get', params=payload) print(response.url)
上述代码将 payload
作为查询参数附加到 URL 上,并发送 GET 请求。
设置请求头
可以通过 headers
参数来设置请求头:
import requests url = 'http://httpbin.org/headers' headers = {'user-agent': 'my-app/0.0.1'} response = requests.get(url, headers=headers) print(response.text)
上述代码向指定的 URL 发送了一个带有自定义 User-Agent 的请求。
身份验证
基本认证
可以使用 auth
参数来进行基本身份验证:
import requests response = requests.get('http://httpbin.org/basic-auth/user/passwd', auth=('user', 'passwd')) print(response.text)
OAuth 认证
对于 OAuth 认证,通常需要手动构造请求头。Requests 本身没有提供内置的支持,但可以结合其他库(如 oauthlib)来实现:
from requests_oauthlib import OAuth1 url = 'https://api.twitter.com/1.1/account/settings.json' oauth = OAuth1('YOUR_APP_KEY', 'YOUR_APP_SECRET', 'USER_TOKEN', 'USER_TOKEN_SECRET') response = requests.get(url, auth=oauth) print(response.text)
会话对象
会话对象允许你在同一个会话中保持某些参数,比如 cookies:
import requests s = requests.Session() s.get('http://httpbin.org/cookies/set/sessioncookie/123456789') r = s.get("http://httpbin.org/cookies") print(r.text)
上述代码创建了一个新的会话对象 s
,并设置了名为 sessioncookie
的 cookie,然后访问了一个包含 cookie 的 URL。
异常处理
在处理网络请求时,可能会遇到各种异常。Requests 使用 requests.exceptions
模块中的异常类来表示这些错误。可以通过捕获这些异常来处理可能出现的问题:
import requests from requests.exceptions import RequestException try: response = requests.get('http://httpbin.org/status/404') response.raise_for_status() # 如果响应状态码不是 200,抛出 HTTPError 异常 except RequestException as e: print(e)
总结
以上是关于 Requests 模块的基础介绍和一些常用功能。Requests 提供了简单而强大的接口,使得 HTTP 请求变得更加容易。希望这篇教程能够帮助你更好地理解和使用 Requests。