使用 Headless Chrome Webdriver 运行 Selenium

新手上路,请多包涵

所以我正在用 selenium 尝试一些东西,我真的希望它快点。

所以我的想法是使用无头 chrome 运行它会使我的脚本更快。

首先,该假设是否正确,或者如果我使用无头驱动程序运行我的脚本是否无关紧要?

无论如何,我仍然想让它无头运行,但不知何故我做不到,我尝试了不同的东西,大多数人建议它会像 10 月更新中所说的那样工作

如何配置 ChromeDriver 以通过 Selenium 以 Headless 模式启动 Chrome 浏览器?

但是当我尝试这样做时,我得到了奇怪的控制台输出,而且它似乎仍然不起作用。

任何提示表示赞赏。

原文由 Rhynden 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 410
2 个回答

要运行 chrome-headless,只需添加 --headless 通过 chrome_options.add_argument ,即:

 from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
#chrome_options.add_argument("--disable-extensions")
#chrome_options.add_argument("--disable-gpu")
#chrome_options.add_argument("--no-sandbox") # linux only
chrome_options.add_argument("--headless")
# chrome_options.headless = True # also works
driver = webdriver.Chrome(options=chrome_options)
start_url = "https://duckgo.com"
driver.get(start_url)
print(driver.page_source.encode("utf-8"))
# b'<!DOCTYPE html><html xmlns="http://www....
driver.quit()


所以我的想法是使用无头 chrome 运行它会使我的脚本更快。

尝试使用诸如 --disable-extensions--disable-gpu 之类的 chrome 选项并对其进行基准测试,但我认为不会有太大改进。


参考资料: headless-chrome

原文由 Pedro Lobito 发布,翻译遵循 CC BY-SA 4.0 许可协议

安装并运行容器化 Chrome:

 docker pull selenium/standalone-chrome
docker run --rm -d -p 4444:4444 --shm-size=2g selenium/standalone-chrome

使用 webdriver.Remote 连接:

 driver = webdriver.Remote('http://localhost:4444/wd/hub', DesiredCapabilities.CHROME)
driver.set_window_size(1280, 1024)
driver.get('https://www.google.com')

原文由 Max Malysh 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题