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库无疑是你的不二之选。