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 请求:
// www.javascriptcn.com code example
import requests
data = {
'key1': 'value1',
'key2': 'value2'
}
response = requests.post('http://httpbin.org/post', data=data)
print(response.text)上述代码向 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。