首页 > 解决方案 > 如何在 Selenium 中使用相同的会话

问题描述

我正在使用 python 和 selenium 开发一个scrapy程序。在采取任何行动之前,我要抓取的网站需要登录。每次它要求我在运行程序时登录我的帐户。我发现通过添加 cookie 可以让浏览器记住我的会话,但不幸的是它仍然无法登录。任何人都可以指导代码吗?谢谢

我的代码:

import pickle
import time
from selenium import webdriver

PATH = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(PATH)

#product URL

driver.get("www.//xxx123.com/xxx")

driver.add_cookie({'domain': '.xxx123.com', 'expiry': 1677743964, 'httpOnly': False, 'name': '_ga','path': '/', 'secure': False, 'value': 'GA1.1.203675790.1614671945'})

标签: pythonselenium

解决方案


当您使用 Chrome 驱动程序时,您应该知道,每次启动它时,它都会创建一个临时配置文件,当您关闭它时会删除该配置文件。

根据您尝试抓取的网页,从 cookie 中恢复会话数据可能是一个挑战。首先创建配置文件并重新使用它可能更容易,只要它允许您用于持久性目的。

options = webdriver.ChromeOptions() 
options.add_argument("user-data-dir=C:\\Path") #Path to your chrome profile
driver = webdriver.Chrome(executable_path="C:\\Program Files (x86)\\chromedriver.exe", chrome_options=options)

您的 Chrome 配置文件的路径应该在此处可用:chrome://version/

根据我的经验,最好创建一个为您处理登录的方法。尝试检测登录页面中的元素;如果它不存在,请照常进行。如果是,请执行登录。


推荐阅读