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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Читайте также:
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.