如何在Python中使用selenium的无头模式?

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

我正在使用最近补丁说明中的相同代码,但它仍然无法工作。

options = ChromeOptions()
options.add_argument("--headless=new")
driver = webdriver.Chrome(options=options)

我的代码无需无头模式即可工作,否则,我会收到此错误:

raise TimeoutException(message, screen, stacktrace)

我也尝试过这个,但没有成功:

service = Service(executable_path=r"C:\Program Files (x86)\WebDrivers\chromedriver.exe")
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(service=service, options=options)

硒4.18.0 Python 3.10.7

python google-chrome selenium-webdriver web-scraping google-chrome-headless
1个回答
0
投票

Selenium 及其 Web 驱动程序的繁琐设置是我创建 Browserist 作为 Selenium 扩展的原因之一。 无头模式只需与 Browserist 一起开箱即用

完全公开,我是这个包的作者。 Browserist 是 Selenium Web 驱动程序的轻量级、简洁的扩展,使浏览器自动化变得更加容易。只需使用

pip install browserist
安装软件包即可开始使用。

也许这样的东西可以解决你的问题?

from browserist import Browser, BrowserSettings

settings = BrowserSettings(headless = True)

with Browser(settings) as browser:
    browser.open.url("https://example.com")

Browserist 有一套成熟的方法来与网页交互,但如果您更喜欢使用 Selenium Web 驱动程序,您也可以返回标准

driver
并继续使用以下脚本:

    driver = browser.driver

请注意,Browserist的无头模式的简单设置适用于跨浏览器类型,因此您甚至可以执行以下操作:

from browserist import Browser, BrowserSettings, BrowserType

chrome = BrowserSettings(type = BrowserType.CHROME, headless = True)
edge = BrowserSettings(type = BrowserType.EDGE, headless = True)
firefox = BrowserSettings(type = BrowserType.FIREFOX, headless = True)

for settings in [chrome, edge, firefox]:
    with Browser(settings) as browser:
        browser.open.url("https://example.com")
© www.soinside.com 2019 - 2024. All rights reserved.