Python爬虫------requests库
1.requests库中主要包括的方法有7个:
requests.request():构造一个请求,支撑一下各方法的基础方法
requests.get():获取HTML网页的主要方法,对应于HTTP的GET
requests.head():获取HTML网页的头信息方法,对应HTTP的HEAD
requests.post():向HTML网页提交POST请求的方法,对应HTTP的POST
requests.put():向HTTML网页提交PUT请求的方法,对应HTTP的PUT
requests.patch():向HTML网页提交局部修改请求,对应HTTP的PATCH
requests.delete():向HTML页面提交删除请求,对应HTTP的DELETE
(1)requests.request()介绍
其实requests只有一个方法,也就是request()方法,其它的6个方法都是通过request()方法封装得到的
参数:requests.request(method, url, **kwargs)
method:请求方式,对应GET/HEAD/POST/PUT/PATCH/DELETE/OPTIONS 共7种
url:获取页面的url连接
**kwargs:包括13个控制访问控制参数(params,data,json,headers,cookies,auth,files,timeout,proxies,allow_redirects,stream,verify,cert)
(2)requests.get()介绍 #最常用
参数:rquests.get(url, params = None, **kwargs)
url:获取页面的url连接
params:url中的额外参数,字典或字节格式,可选
**kwargs:包括13个控制访问控制参数(data,json,headers,cookies,auth,files,timeout,proxies,allow_redirects,stream,verify,cert)
(3)requests.head()介绍 #第二常用
参数:requests.head(url, **kwargs)
**kwargs:包括13个控制访问控制参数(params,data,json,headers,cookies,auth,files,timeout,proxies,allow_redirects,stream,verify,cert)
(4)requests.post()介绍
参数:requests.post(url, data=None,json=None,**kwargs)
url:获取页面的url连接
data:字典、字节序列或文件,Request的内容
json:JSON格式的数据,Request的内容
**kwargs:包括11个控制访问控制参数(params,headers,cookies,auth,files,timeout,proxies,allow_redirects,stream,verify,cert)
(5)requests.put()介绍
参数:requests.put(url, data=None,**kwargs)
url:拟更新页面的url连接
data:字典、字节序列或文件,Request的内容
**kwargs:包括12个控制访问控制参数(params,json,headers,cookies,auth,files,timeout,proxies,allow_redirects,stream,verify,cert)
(6)requests.patch()介绍
参数:requests.patch(url, data=None,**kwargs)
url:拟更新页面的url连接
data:字典、字节序列或文件,Request的内容
**kwargs:包括12个控制访问控制参数(params,json,headers,cookies,auth,files,timeout,proxies,allow_redirects,stream,verify,cert)
(7)requests.delete()介绍
url:拟删除页面的url链接
*kwargs:**kwargs:包括13个控制访问控制参数(params,data,json,headers,cookies,auth,files,timeout,proxies,allow_redirects,stream,verify,cert)
2.Requst和Response---------requests库的两个重要对象
(1)Response对象的属性
r.status_code:HTTP请求的放回状态,200表示连接成功,404(非200)表示失败
r.headers:HTTP响应内容的字符串形式,即url对应的头部内容
r.text:HTTP响应内容的字符串形式,即url对应的页面内容
r.encoding:从HTTP header中猜测相应内容的编码形式(如果header中不存在charset,则认为编码为ISO-8859-1)
r.apparent_encoding:从内容中分析出的相应内容编码形式(备选编码方式),比r.encoding正确。
r.content:HTTP相应内容的二进制形式
r.raise_for_status():如果不是200,产生异常requests.HTTPError
3.requests库中的异常
requests.ConnectionError
requests.HTTPError
requests.URLRequired
requests.TooManyRedirects
requests.ConnectTimeout
requests.Timeout
4.爬去页面的通用代码框架
import requests
def getHTMLTxet(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..con"
print(getHTMLText(url))
5.HTTP协议对资源的操作(每个操作与requests的同名方法一致)
GET:请求获取url位置的资源
HEAD:请求获取url位置资源的响应消息报告,即获得该资源的头部信息
POST:请求向ul位置的资源后附加新的数据
PUT:请求向url位置存储一个资源,覆盖原url位置的资源
PATCH:请求局部更新url位置的资源,即改变该处资源的部分内容
DELETE:请求删除url位置存储的资源