--headless не вариант в chrome webdriver для selenium python

Я хотел бы, чтобы 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 недоступен.

Может ли кто-нибудь дать разъяснения по этому поводу? Позволяет ли хромодрайвер, полученный по приведенной выше ссылке, безголовый просмотр?

Спасибо

Ага, насколько я пытался, мне никогда не удавалось запустить Google Chrome в безголовом режиме. Я только что перешел на firefox.

DollarAkshay 04.01.2019 09:59

Я тоже могу работать в безголовом режиме в macos.

ShivaGaire 04.01.2019 10:12
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
5
2
15 818
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

--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')?

user32882 04.01.2019 10:25

Как предположил @ewwink, это для chrome --headless Запускать хром в безголовом режиме, то есть без пользовательского интерфейса или зависимостей от сервера отображения. ChromeDriver - это отдельный исполняемый файл, который WebDriver использует для управления Chrome. Webdriver - это набор привязок для конкретного языка для управления браузером.

ShivaGaire 04.01.2019 10:46

так что позвольте мне понять это прямо ... chromedriver.exe сам в какой-то момент вызывает Chrome.exe. Идея состоит в том, чтобы вызвать драйвер с дополнительным аргументом?

user32882 04.01.2019 10:52

Спасибо, все работает хорошо. yeap 'chrome_options' устарел, поэтому необходимо использовать 'options'.

spritecodej 07.10.2019 17:39

--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")

Другие вопросы по теме