1、response对象
使用requests模块中get、post等请求方法之后,会返回一个response对象;
在入门笔记中已经对response对象的一些属性进行了介绍,这里主要对其进行总结
r.status_code #响应状态吗
r.raw #返回原始响应体,使用r.raw.read()读取
r.content #字节方式的响应体,会自动对gzip加密的文本进行解码
r.text #字符串形式的响应体,会自动根据响应头部的字符编码进行解码
r.headers #响应头
r.encoding #响应体的字符编码格式
r.json() #内置的JSON编码器
2、会话对象(Session Object)
会话对象可以在不同的请求之间保持一些参数,最方便的就是在各个请求之间保持cookies
>>> import requests
>>> s = requests.Session()
>>> s.cookies.update({"cookie1":"value1"}) #1
>>> r = s.get("http://httpbin.org/cookies")
>>> r.text
u'{\n "cookies": {\n "cookie1": "value1"\n }\n}\n'
>>> r = s.get("http://httpbin.org/cookies", cookies={"cookie2": "value2"}) #2
>>> r.text
u'{\n "cookies": {\n "cookie1": "value1", \n "cookie2": "value2"\n }\n}\n'
>>> r = s.get("http://httpbin.org/cookies", cookies={"cookie1": "value3"}) #3
>>> r.text
u'{\n "cookies": {\n "cookie1": "value3"\n }\n}\n'
>>> r = s.get("http://httpbin.org/cookies") #4
>>> r.text
u'{\n "cookies": {\n "cookie1": "value1"\n }\n}\n'
#1 只有通过这种方式设置的cookies或者headers才可以在不同的请求之间得到保持
#2 在对Session对象设置了cookies之后,还可以在get函数的参数中继续设置其他cookie值;
这里设置的cookie值会与Session对象中的cookie进行合并,而后发给服务器;
但是这里并不会对Session对象中的cookie值进行修改
#3 在这里设置了与Session中有相同key但不同value的cookie;
首先,Session中的cookies与参数中设置的cookies进行合并;
而后,对于相同key的cookie,参数中的value将会覆盖Session中的value;
最后,将这个配置好的cookies发给服务器;
需要注意的是:Session中的所有(key,value)都是保持不变的,上述修改仅限于发送给服务器
#4 这里再次获取cookies,发现还是原来Session中使用s.cookies.update(...)方法设置的cookies;
也印证了#3的正确性
特别地:当服务器返回了新的cookies,Session对象中的cookies会被设置为全新的cookies;
也就是说Session中总会保持最新的cookies。上述设置对headers也同样适用。
(服务器通过在response headers设置set-cookie来将新的cookie传递给客户机)
3、其他功能
(1)SSL证书验证
>>> import requests
>>> r = requests.get("https://kyfw.12306.cn/otn", verify=True)
requests.exceptions.SSLError: [Errno 1] _ssl.c:510: error:14090086:....
>>> r = requests.get("https://github.com", verify=False) #跳过SSL证书验证
>>> print r.status_code
200
>>> r = requests.get("https://github.com", verify=True)
>>> print r.status_code
200
(2)代理设置
>>> import requests
>>> proxies = {"http": "http://10.10.1.10:3128"}
>>> r = requests.get("https://example.org", proxies = proxies)
(3)更多信息请访问如下网址