1.Requests库入门
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
1.1 Requests库的get( )方法
requests.get()
r = requests.get(url)
r是Response 返回一个包含服务器资源的Response对象
get是Request 构造一个向服务器请求 资源的Request对象 (Response对象包含爬虫返回的内容)
requests.get(url, params=None, **kwargs)
∙ url : 拟获取页面的url链接
∙ params : url中的额外参数,字典或字节流格式,可选
∙ **kwargs: 12个控制访问的参数
Response对象的属性
Response的编码
1.2 理解Requests库的异常
r.raise_for_status()在方法内部判断r.status_code是否等于200,不需要 增加额外的if语句,该语句便于利用try‐except进行异常处理
1.3 爬取网页的通用代码框架
1.4 HTTP协议
HTTP:超文本传输协议
HTTP URL的理解:URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源
HTTP协议对资源的操作
通过URL和命令管理资源,操作独立无状态,网络通道及服务器成为了黑盒子
1.5 Requests库的request()方法
requests.request(method, url, **kwargs)
∙ method : 请求方式,对应get/put/post等7种
eg: r = requests.request('GET', url, **kwargs) r = requests.request('HEAD', url,**kwargs)
∙ url: 拟获取页面的url链接
∙ **kwargs: 控制访问的参数,共13个,均为可选项
params : 字典或字节序列,作为参数增加到url中
>>> kv = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.request('GET', 'http://python123.io/ws', params=kv)
>>> print(r.url)
http://python123.io/ws?key1=value1&key2=value2
data: 字典、字节序列或文件对象,作为Request的内容
>>> kv = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.request('POST', 'http://python123.io/ws', data=kv)
>>> body = '主体内容'
>>> r = requests.request('POST', 'http://python123.io/ws', data=body)
json : JSON格式的数据,作为Request的内容 headers : 字典,HTTP定制头 cookies : 字典或CookieJar,Request中的cookie
>>> kv = {'key1': 'value1'}
>>> r = requests.request('POST', 'http://python123.io/ws', json=kv)
auth : 元组,支持HTTP认证功能
>>> hd = {'user‐agent': 'Chrome/10'}
>>> r = requests.request('POST', 'http://python123.io/ws', headers=hd)
files : 字典类型,传输文件
>>> fs = {'file': open('data.xls', 'rb')}
>>> r = requests.request('POST', 'http://python123.io/ws', files=fs)
timeout : 设定超时时间,秒为单位
proxies : 字典类型,设定访问代理服务器,可以增加登录认证
allow_redirects : True/False,默认为True,重定向开关
stream : True/False,默认为True,获取内容立即下载开关
verify : True/False,默认为True,认证SSL证书开关
cert : 本地SSL证书路径
1.6 Requests库的get()方法
requests.get(url, params=None, **kwargs)
∙ url : 拟获取页面的url链接
∙ params : url中的额外参数,字典或字节流格式,可选
∙ **kwargs: 12个控制访问的参数
1.7 Requests库的head()方法
requests.head(url, **kwargs)
∙ url : 拟获取页面的url链接
∙ **kwargs: 12个控制访问的参数
1.7 Requests库的post()方法
requests.post(url, data=None, json=None, **kwargs)
∙ url: 拟更新页面的url链接
∙ data : 字典、字节序列或文件,Request的内容
∙ json: JSON格式的数据,Request的内容
∙ **kwargs: 12个控制访问的参数
1.8 Requests库的put()方法
requests.put(url, data=None, **kwargs)
∙ url : 拟更新页面的url链接
∙ data : 字典、字节序列或文件,Request的内容
∙ **kwargs: 12个控制访问的参数
1.9 Requests库的patch()方法
requests.patch(url, data=None, **kwargs)
∙ url : 拟更新页面的url链接
∙ data : 字典、字节序列或文件,Request的内容
∙ **kwargs: 12个控制访问的参数
1.10 Requests库的delete()方法
requests.delete(url, **kwargs)
∙ url : 拟删除页面的url链接
∙ **kwargs: 12个控制访问的参数
1.11 Robots协议
作用:网站告知网络爬虫哪些页面可以抓取,哪些不行
形式:在网站根目录下的robots.txt文件