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
------------------------------------------------------------------------------------------------
Requests 库的 get() 方法:
获取一个网页最简单的方法: r = requests.get(url)
是构造一个向服务器请求资源的Request对象 ,返回一个包含服务器资源的Response对象。
完整的使用方法: requests.get(url,params=None,**kwargs)
包含三个参数:
url: 拟获取页面的url链接。
params: url中的额外参数,字典或字节流动格式,可选。
**kwargs: 12个控制访问的参数。
Requests库的两个重要对象( Response对象,Request对象)
Response对象: 包含爬虫返回的内容。
例子:
>>>import requests
>>>r = requests.get("http://www.baidu.com")
>>>print(r.status_code)
200
>>>type(r)
<class'requests.models.Response'>
>>>r.headers
{'Cache-Control':'private, no-cache, no-store, proxy-revalidate,
ection':'Keep-Alive','Transfer-Encoding':'chunked','Server':
Response中最常用的五个属性:
- r.status_code : HTTP请求的返回状态,200表示连接成功,404表示失败(也有其他返回值,但只要不是200,都为失败)。
- r.text : 响应内容的字符串形式,即url对应的页面内容。
- r.encoding : 从HTTP header中猜测的响应内容编码方式。(如果header中不存在charset,则认为编码为ISO-8859-1)
- r.apparent_encoding : 从内容中分析出的响应内容编码方式(备选编码方式,实实在在分析内容并找到其中的编码,相对r.encoding来说更加准确)
- r.content : HTTP响应内容的二进制形式。
Resquests库支持六种常用的连接异常
- requests.ConnectionError : 网络连接错误异常,如DNS查询失败、拒绝连接等。
- requests.HTTPError : HTTP错误异常。
- requests.URLRequired : URL缺失异常。
- requests.TooManyRedirects : 超过最大重定向次数,产生重定向异常。
- requests.ConnectTimeout : 连接远程服务器超时异常。(仅指与远程服务器连接的超时异常)
- requests.Timeout : 请求URL超时,产生超时异常。(发出URL请求到获得内容的整个超时异常)
例子:
爬取网页的通用代码框架
import requests
def getHTMLText (url):
try:
r = requests.get(url, timeout=30)
r.raise_for_status() #如果状态不是200,则引发HTTPError异常
r.encoding = r.apparent_encoding
return r.text
except:
return "产生异常"
if__name__=="__main__":
url = "http//www.baidu.com"
print(getHTMLText(url))