【python学习】爬虫中常使用的urllib和requests库的的背景、定义、特点、功能、代码示例以及两者的区别
urllib和requests都是Python中用于发送HTTP请求的库。
- 背景:
- urllib是Python自带的HTTP请求库,包含了几个模块,提供了各种功能,比如:urllib.request 用于打开和读取URLs,urllib.error 包含了由urllib.request抛出的异常,urllib.parse 用于解析URLs,urllib.robotparse 用于解析robots.txt文件。
- requests库是一个更简洁、更易用的HTTP请求库,它比urllib更为Pythonic,提供了更高级的功能,比如自动处理cookies和session,多种类型的HTTP请求方法,JSON/XML解析,客户端证书,链接池等。
- 定义:
- urllib是Python内置的HTTP请求库,用于处理URLs,包括网络爬虫,网络数据抓取等。
- requests是一个第三方库,需要单独安装,它更简洁易用,功能强大,能够进行网络请求,也可以用于网络爬虫,网络数据抓取。
- 特点:
urllib:
- 是Python内置的HTTP请求库,不需要单独安装。
- 提供了大量的HTTP请求功能,包括:URL处理,打开和读取URLs,错误处理等。
- 使用起来较为复杂,需要自己处理大部分的细节。
requests:
- 是第三方库,需要单独安装(pip install requests)。
- 提供了简洁易用的API,可以轻易地发送HTTP请求。
- 支持多种HTTP请求类型,如GET,POST,PUT,DELETE等。
- 自动处理URL编码和cookies。
- 功能:
urllib提供的功能:
- urlopen:打开一个URL
- urlretrieve:下载URL内容到本地
- urlcleanup:清除URL缓存
- quote:URL编码
- unquote:URL解码
- urlencode:将字典编码为URL参数
requests提供的功能:
- 发送GET请求
- 发送HEAD请求
- 发送POST请求
- 发送PUT请求
- 发送DELETE请求
- 发送PATCH请求
- 发送OPTIONS请求
- 连接池管理
- Cookie持久化
- 会话维持
- 文件上传
- 自动处理重定向
- 处理认证
- JSON/XML解析
- 客户端证书
- 超时
- 错误处理
- 响应状态码处理
- 打印出详细的请求信息
- 代码示例:
- urllib示例:
import urllib.request
response = urllib.request.urlopen('http://www.example.com/')
html = response.read()
- requests示例:
import requests
response = requests.get('http://www.example.com/')
html = response.text
在实际应用中,如果需要发送简单的HTTP请求,推荐使用requests库,因为它更简洁易用。如果需要处理复杂的HTTP请求,比如需要处理cookies,session,连接池等,推荐使用urllib库,因为它提供了更多的功能和细节控制。
评论已关闭