python爬虫requests模块
requests库的七个主要方法
1. requests.requests(method, url, **kwargs)
构造一个请求,支撑以下各方法的基础方法
method:请求方式,对应get/put/post等七中方法;
url:拟获取页面的url链接;
**kwargs:控制访问的参数,共13个;
method:请求方式
GET:请求获取url位置的资源;
HEAD:获得该资源的头部信息;
POST:请求向url位置的资源后附加新的数据;
PUT:请求向url位置存储一个资源,覆盖原url位置的资源;
PATCH:请求局部更新url位置的资源,即改变该处资源的部分内容;
DELETE:请求删除url位置存储的资源;
**kwargs:控制访问的参数,均为可选
params:字典或字节序列,作为参数增加到url中;
data:字典,字节序列或文件对象,作为Requests的内容;
json:Json格式的数据,作为Requests的内容;
headers:字典,HTTP定制头;
cookies:字典或cookiejar,Requests中的cookie;
auth:元组,支持HTTP认证功能;
files:字典类型,传输文件;
timeout:设定超超时时间,秒为单位;
proxies:字典类型,设定访问代理服务器,可以增加登记认证;
allow_redirests:True/Flase,默认为True,重定向开关;
stream:True/False,默认为True,获取内容立即下载开关;
verify:True/False,默认为True,认证SSL证书开关;
cert:本地SSL证书路径;
2. request.get(url, params=None, **kwargs)
获取HTML网页的主要方法,对应HTTP的GET;
params:url中额外参数,字典或字节流格式,可选;
**kwargs:12个控制访问参数;
3.requests.head(url, **kwargs)
获取HTML网页头信息方法,对应HTTP的HEAD;
**kwarge:12个控制访问参数;
4.requests.post(url, data=None, json=None, **kwargs)
向HTML网页提交post请求的方法,对应HTTP的POST;
data;字典、字节序列或文件,Requests的内容;
json:Json格式的数据,Requests的内容;
**kwargs:12个控制访问参数;
5.requests.put(url, data=None, **kwargs)
向HTML网页提交PUT请求方法,对应HTTP的PUT;
data:字典、字节序列或文件,Requests的内容;
**kwargs:12个控制访问参数;
6. requests.patch(url, data=None, **kwargs)
向HTML页面提交局部修请求,对应HTTP的PATCH;
data:字典、字节序列或文件,Requests的内容;
**kwagrs:12个控制访问参数;
7. requests.delete(uel, **kwagrs)
向HTML页面提交删除请求,对对应HTTP的DELETE;
**kwagrs:12个访问控制的参数;
requests库的两个重要的对象
Response对象的属性
1. r.status_code
HTTP请求的返回状态,200表示链接成功,404或其他表示失败;
2. r.text
HTTP响应内容的字符串形式,即url对应的页面内容;
3. r.encoding
从HTTP header中猜测的响应内容编码方式;
如果header中不存在charset,则认为编码为ISO-8859-1,r.text根据r.encoding显示网页内容;
4. r.apparent_encoding
从内容中分析出的响应内容编码方式(备选编码方式);
5. r.content
HTTP响应内容的二进制形式;
Requests库的异常
1. requests.ConnectionError
网络连接错误异常,如DNS查询失败,拒绝链接等;
2. requests.HTTPError
HTTP错误异常;
3. requests.URLRequired
url缺失异常;
4.requests.TooManyRedirects
超出最大重定向次数,产生重定向异常;
5. requests.ConnectTimeout
连接远程服务器超时异常;
6. requests.Timeout
请求url超时,产生超时异常;
7.r.raise_for_status()
如果不是200,产生异常requests.HTTPError;
爬取网页的通用代码框架
import requests def getHTMLText(url): try: r = requests.get(url, timeout=30) r.raise_for_status() #RU如果状态不是200,引发HTTPError异常 r.encoding() = r.appearent_conding() return r.text except: return "产生异常" if __name__ == "__main__": url = "www.baidu.com" print(getHTMLText(url))