维持会话:简单是说就是可以帮我们保持登录状态,不用每次请求都要登录
之前我在requests中讲过怎么维持会话,这里简单回顾一下
Import requests
session = requests.Session()
url = '目标url'
response = session.get(url, headers=headers)
这样就可以保持会话
那selenium怎么维持会话呢?
方法一:
第一次登录后获取cookies,之后的每一个请求都带着这个cookies就好了,调用getcookies()获取cookies,调用add_cookies()将cookies加入请求中
from selenium import webdriver
browser = webdriver.Chrome()
cookies = browser.get_cookies()
browser.add_cookie(cookies)
但这方法没什么效果
方法二:
但是我查到了更好的方法来解决这个问题,连登录的环节都可以直接省去。
我们在使用chrome浏览器的时候总会问我们是否需要保存账号密码,在这过程中浏览器就自动帮我们保持了登录的状态,这些数据会存在一个叫User Data文件夹里
我的文件位置在:C:\Users\xjm \AppData\Local\Google\Chrome\User Data
调用add_argument()添加参数user-data-dir
from selenium import webdriver
chromeOptions = webdriver.ChromeOptions()
chromeOptions.add_argument(r"user-data-dir=C:\Users\xjm\AppData\Local\Google\Chrome\User Data") # 把数据传入程序
chromeOptions.add_experimental_option('excludeSwitches', ['enable-automation']) # 防止网站发现我们使用模拟器
browser = webdriver.Chrome(options=chromeOptions)
browser.get('http://58921.com/alltime?page=3')
目标网站:http://58921.com/alltime?page=3(查看大于三页的url需要登录)
之后我们进入浏览器,把账号密码输入,还要记得把记住我点上
最终测试:
我们直接请求第三页看看可以顺利运行吗
结果是:
我们是可以直接请求第三页的而不用登录