Настройка Selenium с драйвером Chrome на Ubuntu/Debian
- Настройка и запуск Chrome и Selenium на Ubuntu или Debian
- Руководство основано на Ubuntu 22.04.
- Последнее изменение: 4 июня 2024 г.
# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.3 LTS"
Оглавление
- Шаг 1. Обновите все пакеты, если необходимо.
- Шаг 2. Загрузите стабильный пакет Google Chrome.
- Шаг 3. Установите Google Chrome.
- (Необязательно) Если после шага 3 у вас возникла проблема с зависимостями, выполните следующую команду, а затем повторите шаг 3.
- Шаг 4. Проверьте установленную версию Google Chrome.
- Шаг 5. Установите Selenium, веб-менеджер веб-драйверов.
- Шаг 6: Создайте hello_world
- Шаг 7. Запустите test.py и проверьте доступность Google Chrome.
- Шаг 8: Вот и все. Наслаждайся этим.:)
- ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ :)
- 1. Моя виртуальная машина работает в облачной среде. Как мне использовать Chrome в этом случае?
- 2. Я написал скрипт Python с использованием Chrome и Selenium и запланировал его с помощью crontab, но cron работает неправильно. Что я должен делать?
- 3. Причина разных способов загрузки ChromeDriver заключается в следующем, например, в чем разница между (1) и (2)?
- 4. Обновлён гугл-хром. Где я могу скачать ChromeDriver и как его установить?
- 4.1. Перейдите на страницу загрузки драйвера Chrome.
- 4.2. Загрузите ChromeDriver.
- 4.3. Установите ChromeDriver.
- 4.4. Пример использования в Python:
- 5. Как я могу запретить автоматическое обновление пакета google-chrome в Ubuntu?
Шаг 1: обновите все пакеты, если необходимо.
# apt update
# apt upgrade
Шаг 2. Загрузите стабильный пакет Google-Chrome.
# wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
Шаг 3. Установите Google Chrome.
# apt-get install -y ./google-chrome-stable_current_amd64.deb
Шаг 4. Проверьте установленную версию Google Chrome.
# google-chrome --version
Google Chrome 123.0.6312.86
Шаг 5. Установите Selenium, веб-менеджер веб-драйверов.
- https://pypi.org/project/webdriver-manager/
# pip3 install selenium
# pip3 install webdriver-manager
Шаг 6: создайте hello_world
- Бегайте с Chrome без головы
# vim test.py
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
options = Options ()
options.add_argument( ' --headless ' )
options.add_argument( ' --no-sandbox ' )
options.add_argument( ' --disable-dev-shm-usage ' )
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
driver.get( " https://python.org " )
print(driver.title)
driver.close ()
- Запуск с графическим интерфейсом Chrome
# vim test.py
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
options = Options ()
# options.add_argument('--headless')
# options.add_argument('--no-sandbox')
options.add_argument( ' --disable-dev-shm-usage ' )
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
driver.get( " https://python.org " )
print(driver.title)
driver.close ()
Шаг 7. Запустите test.py и проверьте, доступен ли «google-chrome».
# python3 test.py
Welcome to Python.org
Шаг 8: Вот и все. Наслаждайся этим:)
ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ :)
1. Моя виртуальная машина работает в облачной среде. Как мне использовать Chrome в этом случае?
- В облачной среде люди обычно используют Chrome в автономном режиме.
- Другими словами, в облачной среде виртуальные машины могут не поддерживать режим отображения, особенно бесплатные виртуальные машины (уровни бесплатного пользования).
- Однако, если ваши виртуальные машины поддерживают X-windows или дисплей, вы также можете использовать режим графического интерфейса.
2. Я написал скрипт Python с использованием Chrome и Selenium и запланировал его с помощью crontab, но cron работает неправильно. Что я должен делать?
- Во многих результатах поиска оказывается, что вам нужно указать режим отображения как 0 в вашем скрипте при запуске его через cron.
- Так:)
*/1 * * * * export DISPLAY=:0; python ~/selenium_script.py
- Однако типичные виртуальные машины, на которых работает Chrome, работают в автономном режиме, где настройки дисплея не имеют значения.
- Проблема может заключаться в том, что при выполнении cronjob cron не имеет пути chromedriver в пути cron.
- поэтому вам нужно указать путь к chromedriver в cron или в вашей программе запуска (скрипт).
- Если вы не знаете путь к chromedriver, вы можете найти его с помощью следующей команды (или установив режим WDM_LOG):
# find / -name "chromedriver"
/root/.cache/selenium/chromedriver
/root/.cache/selenium/chromedriver/linux64/117.0.5938.92/chromedriver
/root/.wdm/drivers/chromedriver
/root/.wdm/drivers/chromedriver/linux64/117.0.5938.92/chromedriver-linux64/chromedriver
- После этого вы можете указать путь в crontab и выполнить его, вот так:)
*/05 * * * * export PATH=$PATH:/root/.wdm/drivers/chromedriver/linux64/117.0.5938.92/chromedriver-linux64/chromedriver; root /data/test.py
Или вы можете создать сценарий Bash, который загружает сценарий Python и указывает путь:
# vim test_loader.sh
#!/bin/bash
export PATH=$PATH:/root/.wdm/drivers/chromedriver/linux64/117.0.5938.92/chromedriver-linux64/chromedriver
...
...
python3 test.py
3. Причина разных способов загрузки ChromeDriver заключается в следующем, например, в чем разница между (1) и (2)?
(1)
from selenium import webdriver
driver = webdriver.Chrome('/home/user/drivers/chromedriver')
(2)
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))
- (1) Загружает chromedriver с помощью веб-драйвера Selenium. В этом случае вам необходимо загрузить двоичный файл chromedriver, разархивировать его где-нибудь на своем компьютере и указать путь к этому драйверу. (Совместимо с Selenium 4.x и более ранними версиями.)
- (2) Запускает Chrome с помощью веб-менеджера драйверов. При использовании пакета webdriver-manager нет необходимости загружать двоичный файл chromedriver отдельно.
Менеджер установки:
pip install webdriver-manager
Использовать с Chrome
селен 3
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
селен 4
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))
- Для получения более подробной информации обратитесь к https://pypi.org/project/webdriver-manager/.
4. Обновлён гугл-хром. Где я могу скачать ChromeDriver и как его установить?
- 4 июня 2024 г. последняя версия Chrome — « 125.0.6422.142 ».
4.1. Перейдите на страницу загрузки ChromeDriver.
- Загрузите драйвер Chrome той же версии, что и обновленный Chrome.
- Нажмите ссылку на информационной панели доступности Chrome для тестирования: https://chromedriver.chromium.org/downloads.
- https://googlechromelabs.github.io/chrome-for-testing/, чтобы найти драйвер Chrome, соответствующий вашей обновленной версии Chrome.
4.2. Загрузите ChromeDriver.
- Загрузите версию драйвера Chrome, соответствующую вашему Chrome.
- https://googlechromelabs.github.io/chrome-for-testing/
For Mac M1, download mac-arm64.
- For Chrome version: https://storage.googleapis.com/chrome-for-testing-public/125.0.6422.141/mac-arm64/chromedriver-mac-arm64.zip
For General Linux distributions, download linux64.
- For Chrome version: https://storage.googleapis.com/chrome-for-testing-public/125.0.6422.141/linux64/chromedriver-linux64.zip
4.3. Установите ChromeDriver.
- Поскольку Chrome Driver представляет собой двоичный файл, отдельный процесс установки не требуется.
- Распакуйте zip-архив и скопируйте файл chromedriver в каталог, где должен находиться драйвер Chrome.
Для Mac местоположением по умолчанию для chromedriver является /usr/local/bin.
% sw_vers
ProductName: macOS
ProductVersion: 13.0
BuildVersion: 22A380
% ls -al /usr/local/bin/chromedriver
-rwxr-xr-x 1 root wheel 17314928 Mar 25 13:23 /usr/local/bin/chromedriver
Если вы хотите поместить его в пользовательский каталог:
- Поместите файл «chromedriver» в нужное место. Например: «/Users/mymac/data/chromedrv/chromedriver».
4.4. Пример использования в Python:
from selenium import webdriver
from selenium . webdriver . chrome . service import Service
def chrome_webdriver ():
chromedriver_path = '/Users/mymac/data/chromedrv/chromedriver'
user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/123.0.0.0 Safari/537.36'
options = webdriver . ChromeOptions ()
options . add_argument ( "--start-maximized" )
options . add_argument ( '--headless' )
options . add_argument ( f'user-agent= { user_agent } ' )
service = Service ( executable_path = chromedriver_path )
driver = webdriver . Chrome ( service = service , options = options )
return driver
url = 'http://www.google.com'
driver = chrome_webdriver ()
driver . get ( url )
driver . implicitly_wait ( 10 )
print ( driver . page_source )
5. Как я могу запретить автоматическое обновление пакета «google-chrome» в Ubuntu?
- Чтобы предотвратить автоматическое обновление Google Chrome в Ubuntu, вы можете использовать закрепление пакета или apt-mark для хранения пакета Chrome. Однако обычно это не рекомендуется
- Имейте в виду, что отключение автоматических обновлений Chrome может поставить под угрозу безопасность. Обычно рекомендуется правильно управлять обновлениями для обеспечения безопасности и функциональности.
Использование apt-mark:
- Удерживайте пакет, чтобы предотвратить обновления:
# apt-mark hold google-chrome-stable
google-chrome-stable set on hold.
- Чтобы снова разрешить обновления, отпустите удержание:
# apt-mark unhold google-chrome-stable
Canceled hold on google-chrome-stable.