python - 使用多线程时关闭所有带有 selenium 的浏览器
问题描述
我正在用硒进行网页抓取。我正在使用多线程库。我的脚本同时打开 3 个 firefox 浏览器并进行抓取。完成抓取后,我想关闭所有浏览器,我尝试了很多方法,但 Browser.quit() 和 browser.close() 关闭 1 个浏览器,其他 2 个浏览器不关闭。
def get_links():
some code here...
def get_driver():
global driver
driver = getattr(threadLocal, 'driver', None)
if driver is None:
chromeOptions = webdriver.ChromeOptions()
chromeOptions.add_argument("--headless")
driver = webdriver.Firefox(executable_path)
setattr(threadLocal, 'driver', driver)
return driver
def get_title(thisdict):
import datetime
driver = get_driver()
driver.get(thisdict["url"])
time.sleep(5)
driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")
if __name__ == '__main__':
ThreadPool(3).map(get_title, get_links())
driver.close() #or driver.quit()
解决方案
您必须使用该self.selenium.stop()
功能。基本quit()
调用driver.dispose
方法依次关闭所有浏览器窗口。close()
关闭设置焦点的浏览器窗口。
推荐阅读
- bash - 跳过名称中已包含 FINAL 的循环中的文件
- regex - 使用正则表达式和 golang 选择 jpg 图像
- java - 如何将 Mainactivity 移至 Fragment?
- laravel - Laravel 5.8 中的多对多关系错误
- java - 我应该如何在我的方法的参数中定义一个 lambda?
- ansible - ansible:主机特定剧本的最佳实践
- go - 使用 viper 定义 golang 程序配置时使用最大精度
- r - 如何通过检测可能的多个子字符串来匹配查找表,如将“US|USA|United States”与 R 中的 `abc,United States,xzy` 匹配?
- android - 有没有“资源重叠”?
- vba - Excel VBA登录时网站只允许手动输入ui/pw