requests库

1. 简介

Requests是一个Python第三方库,可以方便地处理HTTP请求。它采用的是Python语言中的HTTP for Humans的开发理念,使得使用者可以方便快捷地处理各种HTTP请求。与Python标准库中的urllib库相比,Requests库更简单易用,并且功能更加强大。

Requests库的安装非常方便,只需要在终端中输入以下命令即可完成安装(确保已经安装了pip):

pip install requests

2. 使用方法

2.1 发送GET请求

使用Requests库发送GET请求非常简单,只需要调用requests.get()方法,并传入URL即可。下面是一个简单的例子:

import requests

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

print(response.content)

上述代码发送了一个GET请求并获取了百度首页的内容。返回的结果是一个HTTP响应对象,可以通过response的一些属性获取响应的状态码、头部信息、响应内容等信息。

2.2 发送POST请求

发送POST请求也非常简单,只需要调用requests.post()方法,并传入URL和payload即可。payload是POST请求中发送的数据,可以是字典、元组、列表等Python对象。下面是一个简单的例子:

import requests

payload = {'username': 'admin', 'password': '123456'}

response = requests.post('http://example.com/login', data=payload)

print(response.content)

上述代码发送了一个POST请求,发送的数据是一个字典对象。同样的,返回的结果是一个HTTP响应对象。

2.3 定制请求头

有些网站可能会根据请求头的不同做出不同的响应。使用Requests库可以方便地定制请求头。可以通过headers参数设置请求头,下面是一个简单的例子:

import requests

headers = {'User-Agent': 'Mozilla/5.0'}

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

print(response.content)

上述代码指定了一个请求头,其中User-Agent是浏览器标识头部信息。这样的话,服务器会认为这是一个来自浏览器的请求。

2.4 处理响应

处理响应是使用Requests库的重要部分之一。Response对象包含了HTTP响应的状态码、头部信息、响应内容等。下面是一些常见的response对象的属性:

response.status_code:HTTP响应状态码。

response.headers:HTTP响应头部信息。

response.content:HTTP响应内容。

response.text:HTTP响应内容,自动解码gzip和deflate编码。

response.json():HTTP响应内容,自动解析JSON格式。

下面是一个简单的例子,演示了如何获取响应内容:

import requests

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

print(response.status_code)

print(response.headers)

print(response.content)

2.5 处理异常

在处理HTTP请求时,可能会发生各种各样的异常。Requests库提供了多种异常类用于处理这些异常。下面是一些常见的异常类:

requests.exceptions.Timeout:请求超时异常。

requests.exceptions.HTTPError:HTTP错误异常。

requests.exceptions.ConnectionError:连接错误异常。

requests.exceptions.TooManyRedirects:重定向次数过多异常。

下面是一个简单的例子,演示了如何处理异常:

import requests

from requests.exceptions import Timeout

try:

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

print(response.content)

except Timeout as e:

print('请求超时:', e)

3. 示例

3.1 爬取图片

下面是一个简单的例子,演示了如何爬取网络上的图片:

import os

import requests

url = 'http://example.com/image.jpg'

response = requests.get(url)

if response.status_code == 200:

with open(os.path.basename(url), 'wb') as f:

f.write(response.content)

print('保存成功')

上述代码爬取了一个图片,然后将图片保存在本地。

3.2 注册账号

下面是一个简单的例子,演示了如何模拟注册账号的过程:

import requests

url = 'http://example.com/register'

data = {'username': 'admin', 'password': '123456'}

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

if response.status_code == 200:

print('注册成功')

else:

print('注册失败')

上述代码模拟了一个注册账号的过程,然后打印出了注册是否成功。

3.3 翻译文本

下面是一个简单的例子,演示了如何使用百度翻译API进行文本翻译:

import requests

url = 'https://fanyi.baidu.com/v2transapi'

data = {'query': 'hello world', 'from': 'en', 'to': 'zh'}

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

if response.status_code == 200:

result = response.json()

print(result['trans_result']['data'][0]['dst'])

上述代码将英文的“hello world”翻译成中文,并打印出了翻译结果。

4. 总结

Requests是一个非常好用的Python第三方库,可以方便地处理各种HTTP请求。与Python标准库中的urllib库相比,Requests库更简单易用,并且功能更加强大。使用Requests库可以方便地发送HTTP请求、定制请求头、处理响应、处理异常等等。如果你经常处理HTTP请求的话,那么Requests库无疑是你的不二之选。

后端开发标签