You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ubuntu中释放Python脚本驱动的Selenium WebDriver缓存?

问题

使用Selenium WebDriver24小时不间断爬取网站数据时,发现缓存占用空间持续增长,路径/tmp/snap-private-tmp/snap.chromium/tmp已占用4879M。

我的Python脚本scrap.py如下:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.common.exceptions import WebDriverException
from time import sleep

options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(service=Service(), options=options)

driver.get("https://example.com/")
sleep(3)
html = driver.page_source
soup = BeautifulSoup(html, features='html.parser')

我通过以下命令循环执行该脚本1000次(我知道这种方式不够合理):

for run in {1..1000}; do python scrap.py; done

请问如何释放脚本执行后占用的磁盘空间?直接删除该文件夹内的内容即可吗?

目前我使用以下命令清理修改时间超过1天的缓存,已清理4GB数据:

sudo find /tmp/snap-private-tmp/snap.chromium/tmp/ -name '.org.chromium.Chromium*' -type d -mtime +0 -exec rm -rf {} +
解决方案

1. 先修复脚本的核心问题

你的脚本未关闭Chrome驱动实例,每次执行都会启动新的Chrome进程,对应的缓存目录不会自动清理,这是磁盘占用暴涨的根源。在脚本末尾添加关闭驱动的代码:

# ... 原有数据处理代码完成后 ...
driver.quit()  # 彻底关闭浏览器实例,清理所有关联的缓存和进程

用driver.quit()而非driver.close(),前者会终止整个Chrome进程,确保缓存资源被完全释放。

2. 缓存目录的清理说明

直接删除/tmp/snap-private-tmp/snap.chromium/tmp下的.org.chromium.Chromium*目录是安全的——这些是Chrome每次启动生成的临时缓存文件夹,只要当前没有运行的Chrome爬虫实例,删除不会影响系统或后续爬取。

你当前使用的find清理命令是有效的,但修复脚本后,新生成的缓存会在脚本结束后被Chrome自动清理,无需频繁手动执行清理操作。

3. 优化爬取方式(避免重复启动浏览器)

循环执行脚本的效率极低,每次都要启动/关闭Chrome,建议改成单脚本内循环爬取,复用同一个浏览器实例:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from time import sleep
from bs4 import BeautifulSoup  # 补充原脚本缺失的导入

options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
# 可选:禁用缓存进一步减少磁盘占用
options.add_argument('--disable-cache')
options.add_argument('--disk-cache-size=0')

driver = webdriver.Chrome(service=Service(), options=options)

try:
    # 循环1000次爬取
    for _ in range(1000):
        driver.get("https://example.com/")
        sleep(3)
        html = driver.page_source
        soup = BeautifulSoup(html, features='html.parser')
        # 这里添加你的数据处理、存储逻辑
finally:
    # 无论是否出错,最后都关闭驱动
    driver.quit()

这种方式不仅能大幅提升爬取效率,还能从根源上减少临时缓存目录的生成。

内容的提问来源于stack exchange,提问作者Raptor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 12:42:37