Requests库简介
在Python中,处理HTTP请求时,Requests库因其简洁性和强大的功能而广受开发者喜爱。相比之下,虽然urllib库是Python的标准库之一,但在处理复杂的网页验证和COOKIEs时,其复杂性远超Requests库。
安装Requests库
Requests库并非Python的内置库,因此需要单独安装。安装过程非常简单,可以通过pip命令轻松完成:
pip install requests
GET请求示例
使用Requests库发送GET请求非常直观。下面是一个简单的示例,展示了如何发送GET请求并获取响应:
import requests
respOnse= requests.get('http://httpbin.org/get')
print(response.status_code) # 打印状态码
print(type(response)) # 响应对象类型
print(response.text) # 响应内容
print(response.COOKIEs) # COOKIEs信息
上述代码中,我们使用了get()
方法发送GET请求,并通过response
对象获取了状态码、响应类型、响应内容和COOKIEs信息。
POST请求示例
发送POST请求同样简单。下面的示例展示了如何向服务器发送POST请求,并附带表单数据:
import requests
data = {'name': 'germey', 'age': 22}
respOnse= requests.post('http://httpbin.org/post', data=data)
print(response.text)
在这个例子中,我们使用post()
方法发送POST请求,并通过data
参数传递了表单数据。
处理Headers
在发送请求时,有时需要自定义请求头(Headers)。例如,访问某些网站时,服务器可能会检查User-Agent字段来判断请求来源。下面的示例展示了如何设置Headers:
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.3'
}
respOnse= requests.get('https://www.zhihu.com/explore', headers=headers)
print(response.text)
在这个例子中,我们设置了User-Agent字段,以模拟浏览器访问。
处理COOKIEs
Requests库可以自动处理COOKIEs,也可以手动管理COOKIEs。下面的示例展示了如何手动管理COOKIEs:
import requests
COOKIEs = {'sessionid': '123456'}
respOnse= requests.get('http://httpbin.org/COOKIEs', COOKIEs=COOKIEs)
print(response.text)
在这个例子中,我们通过COOKIEs
参数传递了COOKIEs信息。
解析JSON响应
许多API返回的数据都是JSON格式。Requests库提供了方便的方法来解析JSON响应:
import requests
respOnse= requests.get('http://httpbin.org/get')
print(type(response.text)) # 返回类型为str
print(response.json()) # 解析为字典
在这个例子中,我们使用了json()
方法将响应内容解析为Python字典。
处理二进制数据
除了文本数据,Requests库还可以处理二进制数据,如图片、音频和视频。下面的示例展示了如何下载图片并保存到本地:
import requests
respOnse= requests.get('https://github.com/favicon.ico')
with open('favicon.ico', 'wb') as f:
f.write(response.content)
在这个例子中,我们使用了response.content
获取二进制数据,并将其写入文件。
响应状态码
响应状态码用于判断请求是否成功。Requests库提供了一些常用的状态码常量,例如requests.codes.ok
表示200状态码:
import requests
respOnse= requests.get('https://www.baidu.com')
if response.status_code == requests.codes.ok:
print('请求成功')
else:
print('请求失败')
在这个例子中,我们通过比较状态码来判断请求是否成功。
更多用法
关于Requests库的更多高级用法和详细文档,可以参考官方文档:Requests官方文档。