详解Selenium如何实现获取cookies并保存
【资料图】
目录
一、获取cookie二、加载cookie一、获取cookie
获取到cookie后,保存到文件中
from selenium import webdriver import time import json from selenium.webdriver.common.by import By #创建webdriver 对象,指明使用chrome 浏览器驱动 wd = webdriver.Chrome() wd.implicitly_wait(10) #调用webdriver 对象的get方法,可以让浏览器打开指定网址 wd.get("https://zhidao.baidu.com/activity/iknowduck/level?actId=47") input("网页端登录百度账号后,请按回车键") cookie= wd.get_cookies() # #将获得cookie 的信息打印 print(cookie) with open("baiducookies.txt","w") as f: # 将cookies保存为json格式 f.write(json.dumps(wd.get_cookies())) f.close()
二、加载cookie
通过读取txt文件,添加到浏览器中
wd.add_cookie(cookie)
完整的读取cookie的流程
from selenium import webdriver import time import json from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.chrome.options import Options from chatgpt_demo import chatgpt #创建webdriver 对象,指明使用chrome 浏览器驱动 wd= webdriver.Chrome() wd.implicitly_wait(10) #调用webdriver 对象的get方法,可以让浏览器打开指定网址 wd.get("https://zhidao.baidu.com/activity/iknowduck/level?actId=47") # 首先清除由于浏览器打开已有的cookies wd.delete_all_cookies() time.sleep(10) #打开cookie文本,使用已保存的cookie登录 with open("baiducookies.txt","r") as f: # 使用json读取cookies 注意读取的是文件 所以用load而不是loads cookies_list = json.load(f) for cookie in cookies_list: wd.add_cookie(cookie) wd.refresh() #刷新页面 wd.refresh() #刷新页面 time.sleep(6) #获取当前窗口的title First_handle = wd.current_window_handle j = 0 while j < 60: #try: for i in range(9): n = 1 #点击第一个问题 questions = wd.find_elements(By.CSS_SELECTOR, "div.q-item > div.q-title > span:nth-child(2) ") for question in questions: print("第{}个问题:".format(n), question.text) n += 1 #将第一个问题,输入catgpt在线智能回答 message = chatgpt(question.text) print(message) #with open("./output/{}.doc".format(prompt), "w") as of: # of.write(message) titles = question.text + "_百度知道" time.sleep(1) #点击“回答”,按钮 # answer = wd.find_element(By.CSS_SELECTOR,".goto-anwser-btn") # print("点击:",answer.text) wd.add_cookie(cookie) #带cookie question.click() #点击问题 time.sleep(3) #切换窗口,点击“去回答”按钮时,打开了新的窗口,但WebDriver对象对应的 还是老窗口。这里要跟随跳转 for handle in wd.window_handles: # 先切换到该窗口 wd.switch_to.window(handle) # 得到该窗口的标题栏字符串,判断是不是我们要操作的那个窗口 if "titles" in wd.title: # 如果是,那么这时候WebDriver对象就是对应的该该窗口,正好,跳出循环, break #print(wd.title) #新窗口下,不管是否已有其他回答,都点击“我来答按钮” element = wd.find_element(By.CSS_SELECTOR, "#answer-bar") element.click()#点击“我来答按钮” #输入文本 #新窗口,切换到第一级iframe框下,正文内容 wd.switch_to.frame("ueditor_0") element = wd.find_element(By.CSS_SELECTOR,"body > p") print("正在输入答案") element.send_keys(message) #先返回到主html,点击提交按钮 wd.switch_to.default_content() time.sleep(50) element = wd.find_element(By.CSS_SELECTOR,"div.addons.line > a") print(element.text) wd.add_cookie(cookie) # 带cookie element.click() time.sleep(5) #做完一系列操作后关闭school_handle wd.close() # 切换窗口会第一个窗口 wd.switch_to.window(First_handle) #except: print("出错{}次,正在重新运行程序。".format(j)) j += 1 wd.switch_to.window(First_handle) time.sleep(5) wd.refresh() # 刷新页面 else: print("出错太多次啦,程序已结束")
到此这篇关于详解Selenium如何实现获取cookies并保存的文章就介绍到这了,更多相关Selenium获取cookies内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
关键词:
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?