Ошибка при использовании безголового хрома в Selenium

#python #selenium #google-chrome #selenium-webdriver

Вопрос:

Я пытаюсь что-то почистить на веб-сайте. Чтобы получить динамичный контент на веб-сайте, я обращаюсь к селену. Но когда я пытаюсь использовать безголовый Chrome, терминал выводит следующее предупреждение/сообщение об ошибке каждый раз, когда я открываю страницу.

 DevTools listening on ws://127.0.0.1:9234/devtools/browser/3b04bcfa-0f81-4131-813f-9db6f63711fa
[1002/145548.271:ERROR:gpu_init.cc(453)] Passthrough is not supported, GL is swiftshader, ANGLE is
[1002/145548.391:ERROR:command_buffer_proxy_impl.cc(125)] ContextResult::kTransientFailure: Failed to send GpuControl.Cr
eateCommandBuffer.
[1002/145549.272:INFO:CONSOLE(0)] "Error with Permissions-Policy header: Unrecognized feature: 'interest-cohort'.", sour
ce:  (0)
 

Более того, когда я пытаюсь наскрести в Google Colab, результат не кажется приятным и даже нестабильным. Это означает, что длина содержимого соскабливания не одинакова, даже когда я пробую его последовательно. Когда я ставлю тот же код для запуска в локальной среде с безголовым Chrome, кажется, что это лучше. Настройка приведена ниже.

 from selenium import webdriver
from bs4 import BeautifulSoup

options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')

driver = webdriver.Chrome(options=options)
 

Прежде чем я запущу в Google Colab. Я запускаю приведенную ниже команду, упомянутую в сообществе.

 !apt update
!apt install chromium-chromedriver
!pip install selenium
 

Система

 OS: windows 10   python 3.7   Chrome 93.0.x   selenium 1.26.6
 

Комментарии:

1. Почему вы вызываете maximise_window, когда указали headless?

2. @BrutusForcus Спасибо за ваш ответ. Я установил это первым, чтобы максимально увеличить загруженный контент моей страницы, когда я пробую безголовый Chrome. Извините за это, я забываю удалить его, когда поворачиваюсь к безголовому . Я удаляю его, но проблема остается прежней.

Ответ №1:

Вот пример извлечения данных из ссылки и просмотра части содержимого в левой части веб-страницы, где написано «Сводка».:

 import time as time
!apt-get update
!apt install chromium-chromedriver
!which chromedriver
!pip install selenium
import selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.expected_conditions import presence_of_element_located
!pip install page_objects
import page_objects
from page_objects import PageObject, PageElement
time.sleep(1)
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome('chromedriver',options = options)
driver.implicitly_wait(3)
driver.get('https://finance.yahoo.com/quote/AAPL?.tsrc=applewf')
open('source.html', 'w').write(driver.page_source)
parent_tab = driver.current_window_handle
links = driver.find_elements_by_tag_name('a')
for i in links:
  if 'Summary' in i.get_attribute('text'):
    if 'Bid' in driver.find_element_by_tag_name('body').text:
      print(driver.find_element_by_tag_name('body').text)