我的目标是从网站上抓取数据,但长时间运行后(大约 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 不存在(帐户未登录)。
我在谷歌上搜索了解决方案,但没有任何帮助。
对于关闭和退出期间的错误,在各种 stackoverflow 答案(there 或 here)上,您需要首先
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()