requests库介绍
requests 库是一个简洁且简单的处理HTTP请求的第三方库。
requests的最大优点是程序编写过程更接近正常URL 访问过程。
get()是获取网页最常用的方式,在调用requests.get()函数后,返回的网页内容会保存为一个Response 对象,其中,get()函数的参数url 必须链接采用HTTP 或HTTPS方式访问。和浏览器的交互过程一样,requests.get()代表请求过程,它返回的Response 对象代表响应。返回内容作为一个对象更便于操作,Response 对象的属性如下表所示,需要采用<a>.<b>形式使用。
status_code 属性返回请求HTTP 后的状态,在处理数据之前要先判断状态情况,如果请求未被响应,需要终止内容处理。 text 属性是请求的页面内容,以字符串形式展示。encoding 属性非常重要,它给出了返回页面内容的编码方式,可以通过对encoding 属性赋值更改编码方式,以便于处理中文字符 content 属性是页面内容的二进制形式。
json()方法能够在HTTP 响应内容中解析存在的JSON 数据,这将带来解析HTTP的便利。
raise_for_status()方法能在非成功响应后产生异常,即只要返回的请求状态status_code 不是200,这个方法会产生一个异常,用于try…except 语句。使用异常处理语句可以避免设置一堆复杂的if 语句,只需要在收到响应调用这个方法,就可以避开状态字200 以外的各种意外情况。
requests 会产生几种常用异常。当遇到网络问题时,如:DNS 查询失败、拒绝连接等,requests 会抛出ConnectionError 异常;遇到无效HTTP 响应时,requests 则会抛出HTTPError 异常;若请求url 超时,则抛出Timeout 异常;若请求超过了设定的最大重定向次数,则会抛出一个TooManyRedirects 异常。
用requests库访问百度网站20次,代码如下:
1 import requests 2 for i in range (20): 3 print("第",i+1,"次访问") 4 r=requests.get("http://www.baidu.com") 5 r.encoding='utf-8' 6 print("返回状态:",r.status_code) 7 print(r.text) 8 print("text属性长度:",len(r.text)) 9 print("content属性长度:",len(r.content))
效果图: