首页 > 解决方案 > selenium chromedriver 无头浏览器从网站抓取数据的问题

问题描述

我正在使用最新的 chromedriver 2.45。我目前正在构建一个从网站上抓取股票数据的程序。我有一个大约 3000 只股票的清单要抓取,所以我使用多线程来加速我的工作。如果我关闭无头浏览器,我的程序似乎可以正常工作,但是当我将无头浏览器设置为 true(旨在加快脚本速度)时,有时线程会在运行以下行时卡住:

 browser.get(url)

对于每只股票,在运行上述脚本之前,将运行以下脚本:

options = Options()    
chrome_prefs = {}
options.experimental_options["prefs"] = chrome_prefs
chrome_prefs["profile.default_content_settings"] = {"images": 2}
chrome_prefs["profile.managed_default_content_settings"] = {"images": 2}
options.add_argument('--headless')
options.add_argument("–no-sandbox")
options.add_argument("--disable-gpu")
options.add_argument("--disable-extensions")
options.add_argument("disable-infobars")
options.add_argument('--disable-useAutomationExtension')
options.Proxy = None 
options.add_argument("–disable-dev-shm-usage")    
options.add_argument('blink-settings=imagesEnabled=false')
browser = webdriver.Chrome(options=options)
browser.minimize_window()

可悲的是,当它陷入困境时,它不会引发任何异常。我相信该线程正在尝试访问该 url,但该站点未加载,因此它只是一直等待和等待?会是这样吗?如何停止问题?或者也许一个出路是为 做一个计时器browser.get(url),比如说 10 秒,如果它没有得到任何数据,它会再次刷新链接并继续脚本?

还有什么方法或设置可以加快脚本的速度吗?当我执行脚本时,是否可以让程序在后台运行,因为它不断弹出(虽然它在一秒钟后将自身最小化,但 chromedriver 仍然在前面..)

感谢您的时间!

标签: pythonmultithreadingselenium-webdriverselenium-chromedrivergoogle-chrome-headless

解决方案


推荐阅读