Ниже приведен код, который я использую - я попытался сделать его максимально лаконичным.
import selenium
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import bs4
options=Options()
#options.add_argument('--headless') # Works while not headless?
options.add_argument('--disable-gpu') # Last I checked this was necessary.
options.add_argument("--user-data-dir=profiles\\") #Keeps login data
options.add_argument("--profile-directory=Profile 1")
driver=webdriver.Chrome(chrome_options=options)
driver.get("http://www.google.com")
html=driver.page_source
soup=bs4.BeautifulSoup(html, "html.parser")
print(soup)
Основная проблема связана с параметрами --user-data-dir
и --profile-directory
.В моем тестовом примере пользовательский профиль Chrome (обычно находится в C:\Users\User\AppData\Local\Google\Chrome\User Data
) находится в текущем каталоге, чтобы отделить его от любых запущенных в данный момент сеансов Chrome.
Если параметр --headless
включен при использовании вышеуказанногопараметры, которые драйвер зависает (CMD остается и не выдает выходные данные в командной строке Python).Однако, если он не включен, окно открывается и работает, как и ожидалось.
Однако --headless
работает при использовании любого профиля в указанном выше каталоге по умолчанию.
Это вывод консоли;
[0120/222514.611:ERROR:gpu_process_transport_factory.cc(967)] Lost UI shared context.
DevTools listening on ws://127.0.0.1:59961/devtools/browser/ee317ed6-93c7-47c2-b26d-63647980ba0d
[0120/222514.619:ERROR:devtools_http_handler.cc(289)] Error writing DevTools active port to file
[0120/222514.624:ERROR:cache_util_win.cc(19)] Unable to move the cache: 0
[0120/222514.625:ERROR:cache_util.cc(140)] Unable to move cache folder profiles\Default\GPUCache to profiles\Default\old_GPUCache_000
[0120/222514.625:ERROR:disk_cache.cc(184)] Unable to create cache
[0120/222514.625:ERROR:shader_disk_cache.cc(622)] Shader Cache Creation failed: -2
Итак, похоже, что где-то Chromium предполагает, что я использую профиль Default
, хотя на самом деле я указываю, что это не так.
У кого-нибудь есть предложения?Заранее спасибо!