--headless在chrome webdriver中不是硒python的选项

use*_*882 0 selenium google-chrome python-3.x selenium-chromedriver selenium-webdriver

我想selenium运行一个无头的google chrome实例来挖掘某些网站的数据,而无需添加UI。我从此处下载了chromedriver可执行文件,并将其复制到当前的脚本目录中。该驱动程序似乎可以很好地使用硒,并且可以自动浏览,但是我似乎找不到无头的选项。在线使用selenium无头镀铬的大多数示例遵循以下原则:

import os  
from selenium import webdriver  
from selenium.webdriver.common.keys import Keys  
from selenium.webdriver.chrome.options import Options  

chrome_options = Options()  
chrome_options.add_argument("--headless")  
chrome_options.binary_location = '/Applications/Google Chrome   Canary.app/Contents/MacOS/Google Chrome Canary'`    

driver = webdriver.Chrome(executable_path=os.path.abspath(“chromedriver"),   chrome_options=chrome_options)  
driver.get("http://www.duo.com")` 
Run Code Online (Sandbox Code Playgroud)

但是,当我使用命令检查Selenium Webdriver的可能参数时,chromedriver -h我得到的是:

D:\Jobs\scripts>chromedriver -h
Usage: chromedriver [OPTIONS]

Options
  --port=PORT                     port to listen on
  --adb-port=PORT                 adb server port
  --log-path=FILE                 write server log to file instead of stderr, increases log level to INFO
  --log-level=LEVEL               set log level: ALL, DEBUG, INFO, WARNING, SEVERE, OFF
  --verbose                       log verbosely (equivalent to --log-level=ALL)
  --silent                        log nothing (equivalent to --log-level=OFF)
  --append-log                    append log file instead of rewriting
  --replayable                    (experimental) log verbosely and don't truncate long strings so that the log can be replayed.
  --version                       print the version number and exit
  --url-base                      base URL path prefix for commands, e.g. wd/url
  --whitelisted-ips               comma-separated whitelist of remote IP addresses which are allowed to connect to ChromeDriver
Run Code Online (Sandbox Code Playgroud)

没有--headless可用的选项。

有人可以为此提供一些澄清吗?从上面的链接获得的chromedriver是否允许无头浏览?

谢谢

Gee*_*bhu 6

--headless不是论证chromedriver而是为了Chrome--headless以无头模式运行chrome,即没有UI或显示服务器依赖性。ChromeDriver是WebDriver用于控制Chrome的独立可执行文件,而Webdriver是用于驱动浏览器的特定于语言的绑定的集合。

使用这组选项,我可以在无头模式下运行。我希望这个能帮上忙:

from bs4 import BeautifulSoup, NavigableString
from selenium.webdriver.chrome.options import Options
from selenium import webdriver
import requests
import re  
options = Options()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
browser = webdriver.Chrome(chrome_options=options)  # see edit for recent code change.
browser.implicitly_wait(20)
Run Code Online (Sandbox Code Playgroud)

2019年8月12日更新:

旧的: browser = webdriver.Chrome(chrome_options=options)

新: browser = webdriver.Chrome(options=options)


小智 6

尝试

选项.headless=True

以下是我设置 headless chrome 的方法

options = webdriver.ChromeOptions()
options.headless=True
options.add_argument('window-size=1920x1080')
prefs = {
"download.default_directory": r"C:\FilePath\Download",
"download.prompt_for_download": False,
"download.directory_upgrade": True}
options.add_experimental_option('prefs', prefs)
chromedriver = (r"C:\Filepath\chromedriver.exe")
Run Code Online (Sandbox Code Playgroud)