文章目录
1. requests库的安装
方法1:
- 以管理员身份运行cmd,执行以下代码:
pip install requests
方法2:
-
打开pycharm -> 文件 -> 设置 -> 项目 -> Python解释器,如下:
-
点击右上角的 ‘+’ -> 搜索框中输入requests ->安装包,如下:
安装小测:
- 打开IDLE,按照一下步骤输入:
2. requests库的重要内容
2.1 requests的7个方法
- 划重点–要牢记
方法 | 说明 |
---|---|
requests.request | 构造一个请求,支撑以下各方法的基础方法 |
requests.get | 获取HTML网页的主要方法,对应于HTTP的GET |
requests.head | 获取HTML网页头信息的方法,对应于HTTP的HEAD |
requests.post | 向HTML网页提交POST请求的方法,对应HTTP的POST |
requests.put | 向HTML网页提交PUT方法,对应HTTP的PUT |
requests.patch | 向HTML网页提交局部修改请求,对应于HTTP的PATCH |
requests.delete | 向HTML页面提交删除请求,对应于HTTP的DELETE |
2.2 requests库的get( )方法
- requests.get( )方法的实现大概如下图:
requests.get(url, params=None, **kwargs)
- url:拟获取页面的url链接
- params :url中的额外参数,字典或字节流格式,可选
- **kwargs:12个控制访问的参数
- 根据上图get( )方法的源代码我们可以得知,该方法最后返回的是request( )方法的返回值,据此,我们可以推测包括get( )方法在内的其余5个方法都是使用了request( )方法。
2.3 requests库的2个重要对象
r = requests.get(url)
- 简单的一行代码中,它却包含了2个重要对象Request和Response对象
- Request对象用于接收客户端浏览器提交的数据
- Response对象的功能则是将服务器端的数据发送到客户端浏览器
- 这里需要注意的是:Response对象中既包含了服务器返回的所有信息,也包含请求的Request信息
Respnese对象的属性
属性 | 说明 |
---|---|
r.status_code | HTTP请求的返回状态,即状态码 |
r.text | HTTP相应内容的字符串形式,即url对应的页面内容 |
r.encoding | 从HTTP header中猜测的响应内容编码方式 |
r.apparent_encoding | 从内容中分析出响应内容编码方式(备选编码方式) |
r.content | HTTP响应内容的二进制形式 |
2.4 理解requests库的异常
异常 | 说明 |
---|---|
requests.ConnectionError | 网络连接错误异常,如DNS查询失败、拒绝连接等 |
requests.HTTPError | HTTP错误异常 |
requests.URLRequired | URL缺失异常 |
requests.TooManyRedirects | 超过最大重定向次数,产生重定向异常 |
requests.ConnectTimeout | 连接远程服务器超市异常 |
requests.Timeout | 请求URL超时,产生超时异常 |
- 爬取网页的通用代码框架:
try:
r = requests.get(url, timeout=30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return "产生异常"
r.raise_for_status()
- 该方法在内部判断t.status_code是否等于200,如果不是200,将会产生HTTPError异常,不需要增加额外的if语句,该语句便于利用try-except进行异常处理
2.5 理解URL格式
http://host [:port] [path]
- host:合法的Internet主机域名或IP地址
- port:端口号,缺省端口为80
- path:请求资源的路径
2.6 13个控制访问参数
参数 | 说明 |
---|---|
params | 字典或字节序列,作为参数增加到url中 |
data | 字典、字节序列或文件对象,作为Request的内容 |
json | JSON格式的数据,作为Request的内容 |
headers | 字典,HTTP定制头 |
cookies | 字典或CookieJar,Request中的cookie |
auth | 元组,支持HTTP认证功能 |
files | 字典类型,传输文件 |
timeout | 设定超时时间,秒为单位 |
proxies | 字典类型,设定访问代理服务器,可以增加登录认证 |
allow_redirects | True/False,默认为True,重定向开关 |
stream | True/False,默认为True,获取内容立即下载开关 |
verify | True/False,默认为True,认证SSL证书开关 |
cert | 本地SSL证书路径 |
- 了解完这13个可控制访问参数,我们就来再次来看一下7个主要方法的原式吧!
2.7 7个主要方法原式
原式 |
---|
requests.request(method, url, **kwargs) |
requests.get(url, params=None, **kwargs) |
requests.head(url, **kwargs) |
requests.post(url, data=None, json=None, **kwargs) |
requests.put(url, data=None, **kwargs) |
requests.patch(url, data=None, **kwargs) |
requests.delete(url, **kwargs) |
- 以上参数中,除了url外,其余参数其实都是那13个控制访问参数,只不过有些方法给了某些参数默认值。每一种方法都与HTTP的方法一一对应。
2.8 补充