Попытка запустить веб-скребок Selenium в контейнере Docker и получение ошибки «Сообщение: отключено: невозможно получитьPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Попытка запустить веб-скребок Selenium в контейнере Docker и получение ошибки «Сообщение: отключено: невозможно получить

Сообщение Anonymous »

Я работаю над этой проблемой уже 5 часов и перепробовал много разных решений.
Это мой Dockerfile:

Код: Выделить всё

FROM --platform=linux/amd64 python:3.12

WORKDIR /app

COPY .  /app

RUN pip install --upgrade pip

RUN pip install -r requirements.txt

# install google chrome
RUN apt-get update && apt-get install -y wget unzip && \
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb && \
apt install -y ./google-chrome-stable_current_amd64.deb && \
rm google-chrome-stable_current_amd64.deb &&  \
apt-get clean

CMD ["python", "scrap.py"]

А это мой скрипт Python:

Код: Выделить всё

import os
import subprocess
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager

def get_driver():
chromedriver_install = ChromeDriverManager().install()

# Print the version of ChromeDriver
try:
# Use subprocess to get the ChromeDriver version
version_output = subprocess.check_output([chromedriver_install, "--version"], stderr=subprocess.STDOUT).decode('utf-8')
print(f"Installed ChromeDriver version: {version_output}")
except Exception as e:
print(f"Error fetching ChromeDriver version: {e}")

options = Options()
options.add_argument('--headless=new')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')

driver = webdriver.Chrome(
service=Service(chromedriver_install),
options=options
)

return driver

driver = get_driver()

# Navigate to the news website
driver.get("https://www.nytimes.com/")

# Scrape the headlines
headlines = driver.find_elements(By.CLASS_NAME, "indicate-hover")
print("i am running")
for headline in headlines:
print(headline.text)
print("i am closed")
# Close the browser
driver.quit()
Полная ошибка:

Код: Выделить всё

Traceback (most recent call last):
File "/app/scrap.py", line 32, in 
driver = get_driver()
^^^^^^^^^^^^
File "/app/scrap.py", line 25, in get_driver
driver = webdriver.Chrome(
^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/selenium/webdriver/chrome/webdriver.py", line 45, in __init__
super().__init__(
File "/usr/local/lib/python3.12/site-packages/selenium/webdriver/chromium/webdriver.py", line 66, in __init__
super().__init__(command_executor=executor, options=options)
File "/usr/local/lib/python3.12/site-packages/selenium/webdriver/remote/webdriver.py", line 212, in __init__
self.start_session(capabilities)
File "/usr/local/lib/python3.12/site-packages/selenium/webdriver/remote/webdriver.py", line 299, in start_session
response = self.execute(Command.NEW_SESSION, caps)["value"]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/selenium/webdriver/remote/webdriver.py", line 354, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python3.12/site-packages/selenium/webdriver/remote/errorhandler.py", line 229, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: disconnected: Unable to receive message from renderer
(failed to check if window was closed: disconnected: not connected to DevTools)
(Session info:  chrome=129.0.6668.89)
Stacktrace:
#0 0x00400084002a 
#1 0x0040005265e0 
#2 0x00400050e733 
#3 0x00400050e422 
#4 0x00400050c493 
#5 0x00400050cada 
#6 0x00400050b451 
#7 0x004000513a38 
#8 0x00400050b19b 
#9 0x00400050e0ea 
#10 0x00400050c493 
#11 0x00400050cada 
#12 0x00400050b451 
#13 0x004000501d07 
#14 0x00400050b19b 
#15 0x00400050aaa2 
#16 0x00400050a575 
#17 0x00400052880e 
#18 0x0040004fb78e 
#19 0x0040004fb2f6 
#20 0x0040005a6ffc 
#21 0x0040005a6446 
#22 0x00400059a8c3 
#23 0x0040005686b3 
#24 0x00400056968e 
#25 0x00400080aa2b 
#26 0x00400080e9b1 
#27 0x0040007f7225 
#28 0x00400080f532 
#29 0x0040007dc38f 
#30 0x00400082ef28 
#31 0x00400082f0f3 
#32 0x00400083ee7c 
#33 0x004002e41144 
Другие важные сведения:
  • Базовый контекст сборки: MAC OS M1 Sonoma 14.6. 1
  • Версия Selenium: 4.25.0
  • Версия Chromedriver: 129.0.6668.89
  • Версия Chrome: 129.0 .6668.89
Уже предпринятые решения
  • Вывод версий chromedriver и chrome каждая соберите и запустите, чтобы убедиться, что они совпадают.
  • Экспериментируйте со всеми этими дополнительными аргументами:

Код: Выделить всё

    # options.add_argument("--disable-extensions")
# options.add_argument("--disable-gpu")
# options.add_argument("--disable-infobars")
# options.add_argument("--start-maximized")
# options.add_argument("--disable-notifications")
  • Заходим в контейнерный терминал через Docker Desktop и вручную добавляем петлю локального хоста 127.0.0.1 в /etc/hosts

    Заходим в контейнерный терминал через Docker Desktop и добавляем вручную петлю локального хоста 127.0.0.1 в /etc/hosts

    code>, а затем вручную запустить python Scrap.py из этого терминала — тоже без радости
  • Добавление флага shm-size=2gb в мою команду запуска Docker . (На самом деле я предполагаю, что аргумент --disable-dev-shm-usage также охватывает это, но попытаться стоило)
Приношу извинения за длину, но любая помощь или направление будут очень признательны. Это проект технического собеседования, которое мне очень нужно, и мне нужно подготовить его как можно скорее!
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/790 ... ting-the-e
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Python в контейнере Docker отказался от подключения к Postgres в сетевом контейнере Docker
    Anonymous » » в форуме Python
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Почему этот веб-скребок, использующий Selenium, не возвращает весь сайт?
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Почему этот веб-скребок, использующий Selenium, не возвращает весь сайт?
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Почему этот веб-скребок, использующий Selenium, не возвращает весь сайт?
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Почему этот веб-скребок, использующий Selenium, не возвращает весь сайт?
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»