如何在已手动完成登录的浏览器中启动Selenium程序执行爬取任务
Selenium复用已手动操作页面的实现方案
完全可以实现你描述的操作,共有两种常用落地方式:
方案1:复用带调试端口的Chrome实例(最适配你的需求)
该方案可以直接对接你手动操作过的浏览器窗口,无需处理登录态逻辑,步骤如下:
- 先通过命令行启动开启了远程调试端口的Chrome浏览器:
- Windows端执行命令:
chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\selenium_chrome_temp" - macOS端执行命令:
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --user-data-dir="/tmp/selenium_chrome_temp" - 命令中的
user-data-dir是指定独立的浏览器配置目录,避免和你本地日常使用的Chrome配置冲突,可以自定义路径
- Windows端执行命令:
- 在命令启动的Chrome窗口中,手动访问目标网站,完成登录、CAPTCHA校验的全部操作,停留在你需要开始爬取的页面
- 运行你的Selenium Python脚本,配置连接该调试端口即可直接接管当前浏览器状态,示例代码:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() # 对接本地启动的Chrome调试端口 chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222") driver = webdriver.Chrome(options=chrome_options) # 确认连接成功,可打印当前页面信息验证 print(driver.current_url) # 下方直接写你的后续爬取逻辑即可
该方案优势是无需处理Cookie、会话等逻辑,完全复用你手动操作的所有浏览器状态,适合临时爬取、CAPTCHA校验频繁失效的场景。
方案2:保存登录态Cookie复用
如果你需要多次重复爬取,不想每次都手动过CAPTCHA,可以用保存Cookie的方式,操作步骤如下:
- 首次运行脚本,预留时间手动完成登录后保存Cookie到本地,示例代码:
from selenium import webdriver import time import json driver = webdriver.Chrome() driver.get("你的目标网站登录页面地址") # 预留30秒手动完成登录和CAPTCHA校验,时长可自行调整 time.sleep(30) # 登录完成后保存Cookie到本地文件 with open("target_site_cookies.json", "w", encoding="utf-8") as f: json.dump(driver.get_cookies(), f, ensure_ascii=False, indent=2) driver.quit()
- 后续爬取时直接加载本地保存的Cookie即可跳过登录步骤,示例代码:
from selenium import webdriver import json driver = webdriver.Chrome() # 必须先访问目标站点的同域名地址,才能正常写入Cookie driver.get("你的目标站点根域名地址") # 加载本地保存的Cookie with open("target_site_cookies.json", "r", encoding="utf-8") as f: cookies = json.load(f) for cookie in cookies: driver.add_cookie(cookie) # 刷新页面后即进入登录后的状态 driver.refresh() # 下方直接写后续爬取逻辑即可
该方案适合Cookie有效期较长的站点,后续爬取无需重复手动操作,仅在Cookie过期后重新执行一次保存Cookie的步骤即可。
注意事项
- 方案1运行Selenium脚本时,不要关闭手动启动的Chrome窗口,否则会导致连接断开
- 方案2保存的Cookie仅对应目标站点域名,不要跨站点使用
内容的提问来源于stack exchange,提问作者Odhian
相关产品推荐
相关产品推荐

