发布于2019-10-29 14:18 阅读(704) 评论(0) 点赞(4) 收藏(1)
网上描述一大堆,此处不在赘述;
大家知道有些链接在请求时,需要携带cookie字段,而这些cookie字段部分需要从某些响应头里获取(另一部分通过抓包或者js获取),提取后再添加到下一个url的请求中。这样就很麻烦;使用session的好处是:使用session则可以将响应头的cookie自动放入RequestsCookieJar,在下次请求时会自动携带。
我们通过代码查看如下:
def china_189_session():
"""session test"""
session = requests.session()
response = session.post(url='http://189.cn/dqmh/system.do?operate=index',
headers={
"Host": "189.cn",
"Origin": "http://189.cn",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36",
"DNT": "1",
"Accept": "*/*",
"Referer": "http://189.cn/",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "zh-CN,zh;q=0.9"
}
)
print(response.status_code)
print(response.headers.get('Set-Cookie'))
print(session.cookies)
print('\n')
url = 'https://kxlogo.knet.cn/seallogo.dll?sn=e12050811010020422307708&size=0'
response = session.get(url=url,
headers={
"Host": "kxlogo.knet.cn",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36",
"Accept": "*/*",
"DNT": "1",
"Referer": "http://189.cn/",
"Sec-Fetch-Site": "cross-site",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "zh-CN,zh;q=0.9"
})
print(response.status_code)
print(response.headers.get('Set-Cookie'))
print(session.cookies)
"""
运行输出:
200
JSESSIONID-JT=D1F5BD024D997F7E9ACE1F3EB74113FF-n3; Path=/; HttpOnly, dqmhIpCityInfos=%E4%B8%8A%E6%B5%B7%E5%B8%82+%E8%81%94%E9%80%9A; Domain=.189.cn; Expires=Wed, 27-Nov-2019 03:49:33 GMT; Path=/
<RequestsCookieJar[<Cookie dqmhIpCityInfos=%E4%B8%8A%E6%B5%B7%E5%B8%82+%E8%81%94%E9%80%9A for .189.cn/>, <Cookie JSESSIONID-JT=D1F5BD024D997F7E9ACE1F3EB74113FF-n3 for 189.cn/>]>
200
KXUUID="672b9b94cIRHA/rtpg/mzKRY0Xf4hx4IgeF8reK822M68dHjxGc="; Version=1; Domain=.knet.cn; Max-Age=2147483646; Expires=Sat, 15-Nov-2087 07:03:39 GMT; Path=/
<RequestsCookieJar[<Cookie dqmhIpCityInfos=%E4%B8%8A%E6%B5%B7%E5%B8%82+%E8%81%94%E9%80%9A for .189.cn/>, <Cookie KXUUID="672b9b94cIRHA/rtpg/mzKRY0Xf4hx4IgeF8reK822M68dHjxGc=" for .knet.cn/>, <Cookie JSESSIONID-JT=D1F5BD024D997F7E9ACE1F3EB74113FF-n3 for 189.cn/>]>
"""
另外: 附带 RequestsCookieJar 和cookies格式的相互转换方法
def getCurrCookie(cookiejar):
'''
cookiejar 转为字典
:param cookies:cookiejar (self.session.cookies)
:return: cookie:dict
'''
cookie = requests.utils.dict_from_cookiejar(cookiejar)
return cookie
def cookie_from_session(cookie):
"""
cookie 添加到session
:param cookie: dict json
:return:
"""
cookie_dict = json.loads(cookie)
for k, v in cookie_dict.items():
session.cookies.set(k, v)
# 向session中单独添加某个cookie字段 可使用update 如添加 'login_account=1'
self.session.cookies.update({'login_account': '1'})
作者:头疼不是病
链接:https://www.pythonheidong.com/blog/article/147483/494531095f13491bde60/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!