Selenium, Ubuntu, Хром и все-все-все


Я уже писал о самом начале работы с Selenium на Java. Однако, после того, как вы создали рабочий скрипт (для парсинга или там еще для чего) для сайта, то обычно работает он уже на другой машине. Давайте разберемся в частности как запустить наш готовый jar файл на Ubuntu сервере.

Предустановка необходимого ПО

Выполните следующие команды, чтобы установить необходимые пакеты в вашей системе. Здесь Xvfb (виртуальный фреймбуфер X) — это сервер отображения в памяти для UNIX-подобной операционной системы (например, Linux). Он реализует протокол сервера отображения X11 без дисплея. Это полезно для приложений CLI, таких как службы CI.

sudo apt update 
sudo apt install -y unzip xvfb libxi6 libgconf-2-4
Кроме того, установите Java в вашей системе. Установите Oracle Java в вашей системе или воспользуйтесь приведенной ниже командой для установки OpenJDK.

sudo apt install default-jdk
У меня на сервер поставилась 11-я версия, у вас может быть другая, учитывайте это при компиляции приложения.

Гугл Хром

Для тестов нам нужен браузер. Ставим его

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt install ./google-chrome-stable_current_amd64.deb
Дальше драйвер

sudo apt install chromium-chromedriver
Компиляция

Чтобы получить исполняемый jar-файл необходимо скомпилировать код. Берем простейший код,

System.setProperty("webdriver.chrome.driver", "/usr/bin/chromedriver");
WebDriver driver = new ChromeDriver(options);
driver.get("https://upread.ru ");
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
System.out.println(driver.getTitle());
Компилируем например в Эклипс:



Запуск

Теперь можно заливать jar-ник на сервер и пробовать запускать.
java -jar v1.jar
И … вылетает какая-нибудь ошибка. Не стоит переживать. Чаще всего причиной ошибки являются разные версии драйвера и браузера. Скачать нужную можно например здесь или здесь.

Также попробуйте выставить такие опции:

options.addArguments("start-maximized"); 
options.addArguments("disable-infobars"); 
options.addArguments("--disable-extensions"); 
options.addArguments("--disable-gpu"); 
options.addArguments("--disable-dev-shm-usage"); 
options.addArguments("--no-sandbox"); 
options.addArguments("--remote-allow-origins=*");			
options.addArguments("--headless");
Некоторые сайты могут выдавать ошибку 403. Возможно, что они детектят наличие юзер агента. Это поправимо:

options.addArguments("--disable-blink-features=AutomationControlled");	
options.addArguments("--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36");
Пробуем еще раз:



Итог

С этим минимумом знаний вы уже сможете запустить ваш безголовый селениум хром на ява для парсинга. Если требуется сделать что-то подобное или проконсультировать (не бесплатно), то пишите мне по любым контактам.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, парсинг, selenium, java, ubuntu




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Простая анимация на java
Урок 11. Перечисления Java
Обнаружение изменений файлов с помощью FileSystemWatcher C#