我需要打开选项卡并收集数据并关闭选项卡。大约 600 个标签。
问题在于 Chrome 驱动程序会因每个新选项卡而导致内存过载。即使关闭使用
driver.close()
,使用的内存也几乎不会减少。 driver.quit()
将终止会话,所以我不使用它。我在任务管理器中跟踪了 Chrome 过载,问题不在于收集的数据,而在于打开新选项卡。
为什么关闭标签后仍然占用内存以及如何处理?
附注该网站和代码仅作为打开和关闭选项卡的示例
from selenium import webdriver
import time
driver = webdriver.Chrome()
url = 'https://edition.cnn.com/'
driver.get(url)
for i in range(25):
time.sleep(0.5)
driver.execute_script("window.open();")
driver.switch_to.window(driver.window_handles[-1])
driver.get(url)
driver.close()
driver.switch_to.window(driver.window_handles[0])
打开和关闭多个选项卡时,Selenium WebDriver 会遇到内存过载,这是一个已知问题。每个打开的选项卡都会使用更多的内存,尽管 Selenium 的“driver.close()”技术旨在关闭选项卡,但它并不一定会释放与之相关的所有内存资源。随着时间的推移,这可能会导致 RAM 膨胀,特别是在管理大量选项卡时。
您可以通过退出 WebDriver 实例 (driver.quit()) 并定期创建一个新实例来完成此操作。