Requests库是python对于HTTP网页进行操作的最简单易用的库。
Python的Requests库主要有一下集中使用方法:
requests.request() | 构造一个请求,是以下各种方法的基础 |
requests.get() | 获取HTML网页的主要方法,对应于HTTP的GET |
requests.head() | 获取HTML网页头信息的主要方法,对应于HTTP的HEAD |
requests.post() | 向HTML网页提交POST请求的方法,对应于HTTP的POST |
requests.put() | x向HTML网页提交PUT请求的方法,对应于HTTP的PUT |
requests.patch() | x向HTMl网页提交局部修改请求,对应于HTTP的PATCH |
requests.delete() | x向HTML页面提交删除请求,对应于HTTP的DELETE |
requests.get()方法的使用:
request.get(url,params = None,**kwargs)
url : 想要获取的页面的url链接,(例如:https://www.baidu.com)必须加https:// ,否则会报错。
params : url中的额外参数,字典或字节流格式,可选,默认为None。
**kwargs : 12个控制访问的参数
Response对象包含服务器返回的信息,也包含请求的Request信息。
Response对象的属性:
r.status_code |
HTTP请求返回的状态,200表示连接成功,404表示连接失败。 |
r.text | HTTP响应内容的字符串形式,即,url对应的页面内容。 |
r.encode | c从HTTP header中猜测的响应内容的编码方式 |
r.apparent_encoding | c从内容中分析出的响应内容的编码方式 |
r.content | HTTP响应内容的二进制形式 |
代码示例:
r.encoding和r.apparent_encoding的区别:
r.encoding:如果Header中不存在charest,则认为编码是ISO-8859-1,r.text根据r.encoding的编码方式显示内容
r.apparent_encoding:根据网页内容分析出的编码方式,可以看作是r.encoidng的备选
r.raise_for_status()函数会在其内部判断r.status_code是否等于200,如果不等于会直接报错,一般用于try...except进行异常处理。
爬取网页的通用代码框架:
def getHTMLText(url): try: r = requests.get(url) r.raise_for_status() #如果状态不是200,会引发HTTPError异常 r.encoding = r.apparent_encoding return r.text except: return '爬取失败‘’
Requests库的异常:
requests.ConnectionError | 网络连接错误异常,如:DNS查询失败,拒绝连接等 |
requests.HTTPError | HTTP错误异常 |
requests.URLRequired | URL缺失异常 |
requests.TooManyRedirects | 超过最大重定向次数,产生重定向异常 |
requests.ConntecionTimeout | 连接远程服务器超时异常 |
requests.Timeout | 请求URL超时,产生超时异常 |