requests的使用

1. 简介

Requests 是 Python 的一个第三方库,用于发送 HTTP 请求。

相对于 Python 内置的 urllib 库的复杂度和冗长,Requests 简化了发出 HTTP 请求的过程,并自动处理了常见问题,例如连接池、身份验证、Cookie 等问题。Requests 也具有一些方便的功能,例如更加人性化的状态码检查和字典式的 Cookie 管理。

2. 发送 HTTP 请求

2.1 GET 请求

发送 GET 请求非常简单,只需要指定 URL 就可以了。Requests 库会自动加上必要的头部信息,如 Cookies 和 User-Agent。

import requests

response = requests.get('https://www.example.com/')

在上面的代码中,我们发送了一个简单的 GET 请求,将响应内容保存在 response 对象中。

2.2 POST 请求

发送 POST 请求也很简单,只需添加一些数据即可。

import requests

payload = {'key1': 'value1', 'key2': 'value2'}

response = requests.post('https://www.example.com/', data=payload)

上面的代码中,我们创建了一个字典 payload,包含了 POST 请求需要发送的数据。然后,我们向 https://www.example.com/ 发送了一个 POST 请求,把 payload 作为参数传递给了请求。

2.3 其他请求方法

如果需要发送 PUT、DELETE 等请求,也很简单,只需要将方法名改成相应的名字即可。

import requests

requests.put('https://www.example.com/', data={'key': 'value'})

requests.delete('https://www.example.com/')

3. 响应内容

3.1 响应状态码

响应状态码即 HTTP 协议中的状态代码,表示服务器对请求的响应结果。

响应状态码是一个三位数的数字标识。对于状态码,1xx 表示临时响应,2xx 表示成功,3xx 表示重定向,4xx 表示客户端错误,5xx 表示服务器错误。最常见的响应状态码是 200 OK。

import requests

response = requests.get('https://www.example.com/')

print(response.status_code)

运行上面的代码,我们可以看到响应状态码 200。

3.2 响应头部信息

响应头部是服务器发送给客户端的一些关于响应的元数据。

在 Requests 中,我们可以使用 response.headers 访问响应头部信息。响应头部在字典中返回,可以使用键-值对的方式访问。

import requests

response = requests.get('https://www.example.com/')

print(response.headers)

3.3 响应内容

响应的内容保存在 response.text 中。

注意,如果响应内容是二进制格式的,如图片或 PDF 文件,可以使用 response.content 获取原始响应内容。

import requests

response = requests.get('https://www.example.com/')

print(response.text)

4. 异常处理

在请求过程中,可能会遇到一些异常情况。例如,服务器无法连接、DNS 查询失败、请求超时等等。

要处理这些异常,可以使用 try-except 语句。

import requests

from requests.exceptions import Timeout

try:

response = requests.get('https://www.example.com/', timeout=0.1)

except Timeout:

print('请求超时!')

5. 请求头部参数

除默认的头部参数外,我们也可以添加自定义头部参数。常见的自定义头部参数包括 User-Agent、Referer 等信息。

import requests

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.36'}

response = requests.get('https://www.example.com/', headers=headers)

6. 请求参数

在 Requests 中,我们可以通过 params 参数添加请求参数。

import requests

params = {'key1': 'value1', 'key2': 'value2'}

response = requests.get('https://www.example.com/', params=params)

7. 页面编码

对于不同的网页,其编码方式可能不同。我们可以通过 response.encoding 属性来指定编码方式。

import requests

response = requests.get('https://www.example.com/')

response.encoding = 'utf-8'

8. 会话机制

在使用 Requests 时,建议使用 Session 对象创建会话,以维护 cookies。

import requests

s = requests.Session()

s.get('https://www.example.com/')

下次请求时,可以在请求方法中使用 cookies 参数带上之前获取的 cookies:

import requests

s = requests.Session()

s.get('https://www.example.com/')

s.post('https://www.example.com/', cookies=s.cookies)

后端开发标签