python网络爬虫1——Requests库 获取页面
目录
第一章 Requests库
1.Requests库的安装
2.Requests库最常用的方法:requests.get()
3.Response对象的属性
4.爬取网页的通用代码框架
(1)Requests库的异常
(2)爬取网页的通用代码框架
5.Requests库的常用方法
(1)HTTP协议
(2)Requests库的7个主要方法
(3)核心方法:requests.request( method, url, **kwargs)
(4)**kwargs参数
第一章 Requests库
相关介绍:http://www.python-requests.org
1.Requests库的安装
cmd中,运行命令:pip install requests
2.Requests库最常用的方法:requests.get()
r = requests.get(url) 获得网页
使用requests.get(url)生成了一个Request实体,并向服务器发送了资源请求;该实体将提供包含服务器资源的响应内容给变量r
完整函数:requests.get( url, params = None, **kwargs),后面两个参数可选
3.Response对象的属性
| r.status_code | HTTP请求的返回状态,200成功,其他失败 |
|---|---|
| r.text | url对应的页面内容,以字符串形式呈现 |
| r.encoding | 网页的编码方式,从网页header中猜测出来的编码方式 |
| r.apparent_encoding | 备用编码方式,从网页内容中分析出来 |
| r.content | url对应的页面内容,以二进制形式呈现 |
注解:r.encoding表示在Header中如果没有charset字段时,默认采用ISO-8859-1编码方式;然而该编码无法正确解析中文字符。
4.爬取网页的通用代码框架
(1)Requests库的异常
| requests.ConnectionError | 网络连接错误异常 |
|---|---|
| requests.HTTPError | HTTP错误异常 |
| requests.URLRequired | URL缺失异常 |
| requests.TooManyRedirects | 超过最大重定向次数,重定向异常 |
| requests.ConnectTimeout | 连接远程服务器超时异常 |
| requests.Timeout | 请求URl超时,产生超时异常 |
Response对象提供了一个判断异常的方法:
r.raise_for_status() 被触发当其status属性为无效状态码时。
或者:
调用r.raise_for_status() 会导致抛出requests.HTTPError异常。
或者:
r.raise_for_status() 在检测到无效状态码(如非200)时会被触发。
或者:
当检测到无效状态码(如非200)时,会触发调用r.raise_for_status() 并引发requests.HTTPError异常。
或者:
检测到无效状态码(如非200)时会触发调用并引发错误。
(2)爬取网页的通用代码框架
import requests
def getHTMLText(url):
try:
kv = {'user-agent':'Mozilla/5.0'}
r = requests.get(url, timeout = 30, headers = kv) #获取页面,自定义头部(浏览器头部)
r.raise_for_status() #若不是200,则抛出错误,返回“产生异常”
r.encoding = r.apparent_encoding
return r.text
except:
return '产生异常'
if __name__ == '__main__':
url = 'http://www.baidu.com'
print(getHTMLText(url))
5.Requests库的常用方法
(1)HTTP协议
超文本传输协议,基于“请求与响应”模式的协议
HTTP协议对资源有6种操作方法:
| GET | 请求获取URL位置的资源 |
|---|---|
| HEAD | 请求获得资源的头部信息 |
| POST | 向URL位置的资源后面附加新的数据 |
| PUT | 向URL位置存储一个资源,覆盖原资源 |
| PATCH | 局部更新URL位置的资源,部分改变原资源 |
| DELETE | 删除URL位置存储的资源 |
(2)Requests库的7个主要方法

使用requests库中的request方法进行网络请求(method参数)。
获取目标地址对应的资源信息(url地址)。
执行 HEAD 请求(url地址)。
提交 POST 方法的数据包至指定路径(url地址)。
执行 PUT 方法至指定路径(url地址)。
进行 PATCH 请求至指定路径(data包可选)。
删除指定路径下的所有资源(url地址)。
此处为注释:Requests库仅支持requests.request()这一项功能;而其他功能则基于这一核心功能进行扩展实现。
**(3)核心方法:requests.request( method, url, kwargs)
- method即为HTTP协议中的请求方法之一,在此系统中支持GET、HEAD、POST、PUT、PATCH、DELETE及OPTIONS七种常见方式。
- url则指向拟获取页面的URL地址。
- kwargs用于管理访问参数共计13个,并均为可选设置。
**(4)kwargs参数
- params:字典或字节序列,作为参数增加到url中
import requests
dic = {'name': 'TH', 'age' : 26}
r = requests.request('GET', 'http://www.baidu.com', params = dic)
print(r.url)
结果如下:将字典dic中的信息增加到url后
http://www.baidu.com/?name=TH&age=26
data:表示一个字典、一个字节序列或一个文件对象,并将其作为Request内容的一部分提交给服务器。
该字段存储着不同类型的数值数据,并用于后续的数据处理流程。
该字段接收并处理来自不同设备的二进制数据流,并将其转换为可解析的形式。
import requests
dic = {'key1': 'value1', 'key2' : 'value2'}
r = requests.request('POST', 'http://www.baidu.com', data = dic)
body = '主体内容'
r = requests.request('POST', 'http://www.baidu.com', data = body)
- json:JSON格式的数据,作为Request的内容
kv = {'key1': 'value1'}
r = requests.request('POST', 'http://python123.io/ws', json = kv)
- headers:字典,HTTP定制头
hd = {'user-agent' : 'Chrome/10'}
r = requests.request('POST', 'http://python123.io/ws', headers = hd)
- cookies表示为字典或CookieJar,并从HTTP协议中提取cookie信息
- auth是元组类型
- files定义为字典类型的变量
fs = {'file':open('data.xls', 'rb')}
r = requests.request('POST', 'http://python123.io/ws' , files = fs)
- timeout:设置超时时间参数(单位为秒)
- proxies:配置访问代理服务器(以字典形式表示),支持增强身份认证功能
- allow_redirects:指定布尔值(True/False),默认启用状态(是否执行重定向操作)
- stream:指定布尔值(True/False),默认设置为立即开始下载内容
- verify:指定布尔值(True/False),默认启用状态(是否验证SSL证书)
- cert:存储本地SSL证书路径信息
