Я хотел бы, чтобы selenium запускал безголовый экземпляр google chrome для сбора данных с определенных веб-сайтов без накладных расходов на пользовательский интерфейс. Я загрузил исполняемый файл 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")`
Однако, когда я проверяю возможные аргументы для 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
Вариант --headless недоступен.
Может ли кто-нибудь дать разъяснения по этому поводу? Позволяет ли хромодрайвер, полученный по приведенной выше ссылке, безголовый просмотр?
Спасибо
Я тоже могу работать в безголовом режиме в macos.





--headless является аргументом не в пользу chromedriver, а в пользу Chrome. --headless Запустите Chrome в режиме без головы, то есть без зависимостей от пользовательского интерфейса или сервера отображения. 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)
Обновление 12 августа 2019 г .:
старый: browser = webdriver.Chrome(chrome_options=options)
новый: browser = webdriver.Chrome(options=options)
Но у исполняемого файла нет опции headless ... что делает строка options.add_argument('--headless')?
Как предположил @ewwink, это для chrome --headless Запускать хром в безголовом режиме, то есть без пользовательского интерфейса или зависимостей от сервера отображения. ChromeDriver - это отдельный исполняемый файл, который WebDriver использует для управления Chrome. Webdriver - это набор привязок для конкретного языка для управления браузером.
так что позвольте мне понять это прямо ... chromedriver.exe сам в какой-то момент вызывает Chrome.exe. Идея состоит в том, чтобы вызвать драйвер с дополнительным аргументом?
Спасибо, все работает хорошо. yeap 'chrome_options' устарел, поэтому необходимо использовать 'options'.
--headless - это аргумент нет для chromedriver, но Chrome, вы можете увидеть больше аргументов или переключателей командной строки для chrome здесь
options.headless = Верно
Вот как я установил свой хром без головы.
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")
Ага, насколько я пытался, мне никогда не удавалось запустить Google Chrome в безголовом режиме. Я только что перешел на firefox.