request库
官方文档:http://www.python-requests.org/
安装:pip install requests
1.七个主要方法
- 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
2.Request对象(其它方法参数,用法差不多)
s = Session()
req = Request('POST', url, data=data, headers=headers) # 构造了一个Request对象
prepped = s.prepare_request(req) # 其转换为一个Prepared Request对象
r = s.send(prepped) # send()方法发送
requests.Request(method, url, **kwargs)
-
url : 拟获取页面的url链接 ∙
-
method : 请求方式 ,对应get/put/post等7种
-
**kwargs: 控制访问的参数,共13个:
-
params : 字典或字节序列,作为参数增加到url中
-
data : 字典、字节序列或文件对象,作为Request的内容,post请求
-
json : JSON格式的数据,作为Request的内容
-
headers : 字典,HTTP定制头,常设置User-agent,referer,cookie
-
cookies : 字典或CookieJar,Request中的cookie,
-
auth : 元组,支持HTTP认证功能,auth=('username', 'password')
-
files : 字典类型,传输文件,files = {'file': open('favicon.ico', 'rb')}
-
timeout : 设定超时时间,秒为单位
-
proxies : 字典类型,设定访问代理服务器,可以增加登录认证.
proxies = { "http": "http://10.10.1.10:3128", # 普通代理 "http": "http://user:password@10.10.1.10:3128/", # 认证的代理http://user:password@host:port这样的语法 'http': 'socks5://user:password@host:port', # pip3 install 'requests[socks]'安装SOCKS库,SOCKS代理 }
-
allow_redirects : True/False,默认为True,重定向开关
-
stream : True/False,默认为True,获取内容立即下载开关
-
verify : True/False,默认为True,认证SSL证书开关,请求一个HTTPS站点,但是证书验证错误的页面时会报错,设置为False即可,但会有警告:from requests.packages import urllib3;urllib3.disable_warnings()忽略警告
-
cert : 本地SSL证书路径
-
3.Response对象的属性
- r.status_code
HTTP请求的返回状态,200表示连接成功,可以和一个内置的状态码查询对象requests.codes比较,例如r.status_code==requests.codes.OK判断是否返回200
-
r.text
HTTP响应内容的字符串形式,即,url对应的页面内容 -
r.encoding
从HTTP header中猜测的响应内容编码方式,如果header中不存在charset,则认为编码为ISO‐8859‐1 r.text根据r.encoding显示网页内容
- r.apparent_encoding
从内容中分析出的响应内容编码方式(备选编码方式),根据网页内容分析出的编码方式可以看作是r.encoding的备选
- r.content
HTTP响应内容的二进制形式,二进制写入文件
- r.josn()
JSON格式的字符串转化为字典,或json.loads(response.text)
- r.url
请求的url
- r.history
历史
4.requests异常
requests.RequestException:基类异常
requests.ConnectionError 网络连接错误异常,如DNS查询失败、拒绝连接等
requests.HTTPError HTTP错误异常
requests.URLRequired URL缺失异常
requests.TooManyRedirects 超过最大重定向次数,产生重定向异常
requests.ConnectTimeout 连接远程服务器超时异常
requests.Timeout 请求URL超时,产生超时异常
5.requests其他方法和属性
requests.codes
一个内置的状态码查询对象,例如requests.codes.OK
requests.cookies
新建了一个RequestCookieJar对象,用set()方法设置每一个key和value
jar = requests.cookies.RequestsCookieJar()`
jar.set(key, value)
requests.Session()
方便地维护一个会话,而且不用担心cookies的问题,它会帮我们自动处理好
s = requests.Session() # 得到一个Session对象,通过这个对象发送请求,都属于同一个会话
s.get('www.baidu.com')