如何循环关闭并重新打开浏览器实例?

问题描述 投票:0回答:1

我的目标是从网站上抓取数据,但长时间运行后(大约 3-4 小时),浏览速度明显下降。因此,在循环特定时间后,我想关闭浏览器并再次打开它以清除内存。这是我的代码

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
driver = webdriver.Chrome()
options.add_argument("user-data-dir=C:\\Users\\Name\\Desktop\\ProjectProfile\\1") #Path to your chrome profile
options.add_experimental_option("detach", True)
options.set_capability("pageLoadStrategy", "eager")
driver = webdriver.Chrome(options=options)
driver.maximize_window()
x = 0
while x <= 10:
    driver.get("https://example.com")
    My_code()
    if x == 5:
        driver.quit() #this would get me No connection could be made because the target machine actively refused it error
        driver.close() #this would get me Invalid session id error
        driver = webdriver.Chrome()

我在使用

driver.close()
driver.quit()
时遇到 2 个错误,并且当它打开新的浏览器实例时,Chrome 配置文件中的 cookie 不存在(帐户未登录)。

我在谷歌上搜索了解决方案,但没有任何帮助。

python selenium-webdriver webdriver
1个回答
0
投票

对于关闭和退出期间的错误,在各种 stackoverflow 答案(therehere)上,您需要首先

close
,然后
quit

对于cookie问题,这是因为你不再使用option。使用以下代码应该会更好:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

def get_driver()
    options = Options()
    options.add_argument("user-data-dir=C:\\Users\\Name\\Desktop\\ProjectProfile\\1") #Path to your chrome profile
    options.add_experimental_option("detach", True)
    options.set_capability("pageLoadStrategy", "eager")
    driver = webdriver.Chrome(options=options)
    driver.maximize_window()
    return driver

driver = get_driver()

x = 0
while x <= 10:
    driver.get("https://example.com")
    My_code()
    if x == 5:
        driver.close()
        driver.quit()
        driver = get_driver()
© www.soinside.com 2019 - 2024. All rights reserved.