Selenium Python Chrome运行极慢,Cookie或缓存是元凶吗?
核心问题解答
- 默认行为:Selenium启动Chrome时,默认会创建全新的临时用户数据目录,不会复用之前的Cookie、缓存或浏览器配置。每次会话访问页面时,所有资源(脚本、图片、样式等)都会重新加载,这正是你爬取大量相似个人资料页面时速度慢的原因之一。
- 你的需求(会话内复用、关闭后销毁)是可以实现的,关键在于自定义用户数据目录。
具体实现方法
通过给ChromeOptions添加--user-data-dir参数,指定一个本地目录来存储会话的Cookie和缓存。同一个driver会话中,浏览器会自动复用已加载的资源;会话结束后,删除这个目录就能彻底销毁数据。
修改你的代码示例
在配置options的部分添加以下代码:
import tempfile import shutil # 创建临时目录用于存储用户数据 user_data_dir = tempfile.mkdtemp() options.add_argument(f"--user-data-dir={user_data_dir}")
在关闭driver后,执行目录删除操作:
driver.quit() # 销毁用户数据目录 shutil.rmtree(user_data_dir)
注意事项
- 不要让多个Chrome实例共用同一个用户数据目录,会导致会话冲突、数据混乱。
- 若需要精细控制缓存,可通过prefs配置调整缓存上限:
prefs = { 'download.default_directory': dFolder, 'disk-cache-size': 1073741824 # 设置缓存上限为1GB,单位字节 } options.add_experimental_option('prefs', prefs)
额外提速建议
结合你已用的无头模式,可再加这些参数进一步优化:
--disable-images:无需爬取图片时直接禁用加载--disable-plugins:禁用不必要的插件--disable-extensions-except={blocker}:仅保留你需要的广告拦截扩展,避免冗余扩展影响性能(需替换成你的扩展路径)
内容的提问来源于stack exchange,提问作者Ned Hulton
相关产品推荐
相关产品推荐

