文章目录
- 1、简单介绍requests的使用方法
- 2、爬虫中六种常用的异常处理。
- 3、requests库的七个主要方法。
- 3.1 七个主要方法
- 3.2 HTTP协议对资源的操作
- 4、requests库方法的参数详解
- 4.1 request()参数(requests.request(method, url, **kwargs))
- 4.1.1 method
- 4.1.2 url
- 4.1.3 **kwargs对应的13个参数
- 4.1.4 具体使用方法
- 4.2 其他六个方法的参数
1、简单介绍requests的使用方法
以百度网站为例:
import requests
r = requests.get('http://www.baidu.com')
print(r.status_code)
调用status_code后,会返回一个值,如果返回值为200,则代表访问成功。
接着使用text查看内容:
print(r.text)
我们会发现有许多乱码,因此就需要改变编码方式。
print(r.encoding)
print(r.apparent_encoding)
r.encoding = r.apparent_encoding
# 也可以这样写
# r.encoding = 'utf-8'
encoding方法是从HTTPheader中猜测响应内容的编码,但如果header中不存在charset字段,就默认编码为ISO-8859-1,而apparent_encoding则是从内容中分析编码,只需将它赋给encoding 即可。
下面是爬虫通用代码框架:
import requests
try:
url = 'http://www.baidu.com'
r = requests.get(url)
r.raise_for_status()
r.encoding = r.apparent_encoding
print(r.text)
except:
print("爬取失败")
r.raise_for_status()用来判断status_code的返回值,如果不是200,则返回一个HTTPError异常。
2、爬虫中六种常用的异常处理。
异常 | 说明 |
requests.ConnectionError | 网络连接错误异常, 如DNS查询失败,拒接连接等 |
requests.HTTPError | HTTP错误异常 |
requests.URLRequired | URL缺失异常 |
requests.TooManyRedirects | 超过最大重定向次数,产生重定向异常 |
requests.ConnectTimeout | 连接远程服务时,超时异常 |
requests.Timeout | 请求URL超时, 产生超时异常 |
3、requests库的七个主要方法。
3.1 七个主要方法
方法 | 说明 |
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 |
3.2 HTTP协议对资源的操作
方法 | 说明 |
GET | 请求获取URL位置资源 |
HEAD | 请求获取URL位置资源的响应报告,即获得该资源的头部信息 |
POST | 请求向URL位置的资源后添加新的数据 |
PUT | 请求向URL位置储存一个资源,覆盖原URL位置的资源 |
PATCH | 请求局部更新URL位置的资源,即改变该处资源的部分内容 |
DELETE | 请求删除URL位置储存的资源 |
4、requests库方法的参数详解
4.1 request()参数(requests.request(method, url, **kwargs))
4.1.1 method
请求方式,对应GET、POST、PUT等七种操作方法
4.1.2 url
文本连接
4.1.3 **kwargs对应的13个参数
参数 | 说明 |
params | 字典或字节序列,作为参数增加到url中 |
data | 字典,字节序列或文件对象,作为request的内容 |
json | JSON格式的数据,作为request的内容 |
headers | 字典,HTTP定制头 |
cookies | 字典或CookieJar, request中的cookie |
auth | 元组,支持HTTp认证功能 |
files | 字典类型,传输文件 |
timeout | 设定超时时间,秒为单位 |
proxies | 字典类型,设定访问代理服务器,可以增加登录认证 |
allow_redirects | 重定向开关,默认为True |
stream | 获取内容立即下载开关,默认为True |
verify | 认证SSL证书开关,默认为True |
cert | 本地SSL证书路径 |
4.1.4 具体使用方法
以params和headers为例,其他类似:
import requests
kv1 = {'key1': 'value1', 'key2': 'value2'}
kv2 = {'User-Agent': 'chrome'}
url = 'http://www.baidu.com'
r1 = requests.request("GET", url, params=kv1)
r2 = requests.request('POST', url, headers=kv2)
# 使用params后
print(r1.url)
# 原User-Agent显示为python爬虫
print(r1.request.headers)
# 伪装为谷歌浏览器chrome进行访问后的User-Agent
print(r2.request.headers)
结果:
4.2 其他六个方法的参数
1、 | requests.get(url, params=None, **kwargs) |
2、 | requests.head(url, **kwargs) |
3、 | requests.post(url, data=None, json=None, **kwargs) |
4、 | requests.put(url, data=None, **kwargs) |
5、 | requests.patch(url, data=None, **kwargs) |
6、 | requests.delete(url, **kwargs) |
对应参数即为上面内容。