python之requests.session()使用

背景:使用requests.session会话对象先登录至豆瓣网,再进入“我的豆瓣”。

首先说一下,为什么要进行会话保持的操作?

requests库的session会话对象可以跨请求保持某些参数。

说白了,就是比如你使用session成功的登录了某个网站,则再次使用该session对象对该网站的其他网页访问时都会默认使用该session之前使用的cookie等参数。

准备工作

1、先在浏览器正常登录豆瓣,并进入“我的豆瓣”,且通过Fiddler工具抓取相应的url和请求体;

2、查看页面的编码格式,避免出现中文乱码。

''' 
  通过Fiddler抓取豆瓣登录、我的主页网址
  url1: 豆瓣登录网址
  url2: 我的主页网址
'''

import
requests url1 = "https://accounts.douban.com/j/mobile/login/basic" url2 = "https://www.douban.com/people/xxxx/" # 通过Fiddler抓取请求头 header = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Firefox/68.0" } # 通过Fiddler抓取请求体(没想到抓到的密码竟然未加密?) payload = { 'ck': "", 'name': "xxxxx", 'password': 'xxxx', 'remember': 'false', 'ticket': '', } # 初始化requests.sessionh()会话对象 session = requests.session() response1 = session.get(url=url1, headers=header, verify=False) response2 = session.post(url=url1, headers=header, data=payload, verify=False) # print(response2.text) if response2.status_code == 200: # verify=False:关闭requests证书验证 response3 = session.get(url=url2, headers=header, verify=False) # 在"我的主页"中右键"查看元素",发现<head>中charset='utf-8',所以设置写入文件的编码格式,否则乱码 with open("douban.html", 'w', encoding = "utf-8") as file: file.write(response3.text)

douban.html文件的部分内容:

参考:https://blog.csdn.net/weixin_42575020/article/details/95179840

原文地址:https://www.cnblogs.com/Maruying/p/13511976.html