Requests库入门
Requests库得7个主要方法:
requests.request() 构造一个请求,支撑以下各方法得基础方法
requests.get() 获取html网页得主要方法,对应于HTTP得GET
requests.head() 获取http网页信息头的方法,对应于HTTP的HEAD
requests.post() 向html网页提交POST请求的方法,对应HTTP的POST
requests.put() 向html网页提交PUT请求的方法,对应HTTP的PUT(一组数据所有字段一并提交)
requests.patch() 向html网页提交局部修改请求,对应HTTP的PATCH(可以提交一组数据的部分字段,节省带宽)
requests.delete() 向html提交删除请求,对应HTTP的DELETE
requests.get(url, params=None, **kwargs)
-
- url :拟获取页面的链接
- params : url中的额外参数,字典或字节流格式,可选
- **kwargs :12个控制访问参数
后面六种方法其实是调用了requests.request()
以get方法源码举例:
def get(url,params=None, **kwargs): kwargs.setdefault('allow_redirects', True) return request('get', url, params=params,**kwargs) #其余5个可以通过改变第一个字符串参数实现
get的使用:
r =requests.get("http://www.baidu.com")
r是服务器返回的response对象
Response对象的属性
r.status_code HTTP请求的返回状态,200表示连接成功,404表示失败
r.text HTTP响应内容的字符串形式,即url得页面内容
r.encoding 从HTTP header中猜测得响应内容编码方式
r.apparent_encoding 从内容中分析的响应内容的编码方式(备选编码方式)
r.content HTTP响应内容的二进制形式
ps:
r.encoding: 如果header中不存在charset,则认为编码为ISO-8859-1,r.text根据r.encoding现实页面内容
r.apparent_encoding: 根据页面内容分析的编码方式,可以看做是r.encoding的备选
Requests库的异常:
requests.ConnectionError 网络连接异常,如DNS查询失败、拒绝连接等
requests.HTTPError HTTP错误异常
requests.URLRequired URL缺失异常
requests.TooManyRedirects 超过最大重定向次数,产生重定向异常
requests.ConnectTimeout 连接远程服务器超时异常
requests.Timeout 请求URL超时,产生超时异常
r.raise_for_status()在方法内部判断r.status_code是否等于200,不需要增加额外fi语句,改语句便于利用try-except进行异常处理
requests.raise_for_status() 如果不是200,产生异常requests.HTTPError
抓爬网页的通用代码框架
import requests def getHTMLText(url): try: r.reuqests.get(url, timeout=30) r.raise_for_status() #不是200引发异常 r.encoding=r.apparent_encoding return r.text except: return '产生异常' if __name__=="__main__": url = 'http://www.biadu.com' print(getHTMLText(url))
HTTP URL的理解:
URL是通过HTTP协议存取资源的Interent路径,一个URL对应一个数据资源,就好像电脑文件路径一样
**kwargs:控制访问参数
params url中的额外参数,字典或字节流格式,可选
data 字典、字节序列或文件,Requests的内容
json JSON格式的数据,Requests的内容
headers 字典,HTTP定制头
cookies 字典或CoolieJar,Request中的cookie
auth 元组,支持HTTP认证功能
files 字典类型,传输文件
timeout 设定超时时间单位为秒
proxies 字典类型,设定访问代理服务器,可以增加登录认证
allow_redirects True/False,默认为True,重定向开关
stream True/False,默认为True,获取内容立即下载开关
verify True/False,默认为True,认证SSL证书的开关
cert 本地SSL证书路径