Chromedriver в Ubuntu: selenium.common.exceptions.SessionNotCreatedException: Сообщение: сеанс не создан - PullRequest
0 голосов
/ 02 ноября 2019

Возникли проблемы с селеном + хроматографом в среде Ubuntu в AWS (экземпляр EC2).

Я использую chromedriver для Linux64 версии (wnload chromedriver for Linux: wget https://chromedriver.storage.googleapis.com/78.0.3904.70/chromedriver_linux64.zip). Затем я поместил хромедривер в /usr/bin.

Chrome был загружен для Ubuntu с использованием sudo dpkg -i google-chrome-stable_current_amd64.deb Если я проверяю версию Chrome с помощью google-chrome --version, я вижу, что это:

Google Chrome 78.0.3904.70 

Следующий код Python работает, но проблема заключается вчто это работает только спорадически.

options = Options()
options.add_argument('--no-sandbox')
options.add_argument('--window-size=1420,1080')
options.add_argument('--headless')
options.add_argument('--disable-dev-shm-usage')
options.add_argument("--remote-debugging-port=9222")
options.add_argument('--disable-gpu')


driver = webdriver.Chrome(chrome_options=options)

#Set base url (SAN FRANCISCO)
base_url = 'https://www.bandsintown.com/en/c/san-francisco-ca?page='

#Build events array 
events = []
eventContainerBucket = []

for i in range(1,2):

    #cycle through pages in range
    driver.get(base_url + str(i))
    pageURL = base_url + str(i)
    print(pageURL)

Хотя приведенный выше код работал без проблем в прошлом, если я запускаю его несколько раз, я получаю следующую ошибку:

    Traceback (most recent call last):
  File "BandsInTown_Scraper_SF.py", line 84, in <module>
    driver = webdriver.Chrome(chrome_options=options)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/selenium/webdriver/chrome/webdriver.py", line 81, in __init__
    desired_capabilities=desired_capabilities)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: session not created
from disconnected: unable to connect to renderer
  (Session info: headless chrome=78.0.3904.70)

Я прочиталчто для решения этой проблемы вам может понадобиться отредактировать файл etc/hosts. Я посмотрел здесь, и все выглядит хорошо:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost 

Я также могу использовать запросы и URL-адреса доступа через сервер просто отлично. Например, следующий текст не дает мне никаких проблем:

url = 'https://www.bandsintown.com/en/c/san-francisco-ca?page=6'
res = requests.get(url)
html_page = res.content

soup = BeautifulSoup(html_page, 'html.parser')
text = soup.find_all(text=True)
print(text)

Другая важная информация, которая, по моему мнению, может быть причиной этой проблемы, заключается в том, что хроматографу не разрешается работать в режиме без головы. Например, если я наберу chromedriver в терминале, я получу это сообщение:

Starting ChromeDriver 78.0.3904.70 (edb9c9f3de0247fd912a77b7f6cae7447f6d3ad5-refs/branch-heads/3904@{#800}) on port 9515
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.

Наконец, если я попытаюсь сделать chmod 777 в /usr/bin, появится сообщение operation not permitted. Может ли это быть частью проблемы?

Итак, похоже, что chrome + chromedriver - это та же версия, так что проблема не в этом. Хромедрайвер и селен блокируются. Я немного запутался, как решить эту проблему. Если у кого-то есть предложения, я был бы признателен! Спасибо.

1 Ответ

0 голосов
/ 04 ноября 2019

Это решено, проблема, кажется, была на моем конце. Удаление этой строки: options.add_argument("--remote-debugging-port=9222"), похоже, исправило эту проблему. Благодаря.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...