Debianでselenium+chromedriverを導入してヘッドレスブラウザをPHPで実行する環境構築

Debian (Bitnami WordPress) でselenium+chromedriverを導入するには以下の手順

目次

日本語フォントインストール

sudo apt install fonts-takao
sudo apt-get install fontconfig
sudo fc-cache -fv
fc-match TakaoGothic
sudo apt install fonts-ipafont fonts-ipaexfont
sudo fc-cache -fv
fc-match IPAGothic

chromeのインストール

//キーをインストール
wget https://dl.google.com/linux/linux_signing_key.pub
sudo apt-get -y install gnupg
sudo apt-key add linux_signing_key.pub

//Chromeインストール
echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' | sudo tee /etc/apt/sources.list.d/google-chrome.list
sudo apt-get update
sudo apt-get install google-chrome-stable

//バージョン確認
google-chrome --version
例:Google Chrome 102.0.5005.115 

chromeDriverのインストール

注意:先程インストールしたChromeと同じバージョンのDriverをインストールすること。バージョンはメジャーバージョンがあっていればよい。例では102を選択

https://chromedriver.chromium.org/downloads

ドライバーのリンクをコピー

wget [先程コピーしたドライバのリンク]
unzip chromedriver_linux64.zip 
sudo mv chromedriver /usr/local/bin/

//バージョン確認
chromedriver --version
例:ChromeDriver 102.0.5005.61 (0e59bcc00cc4985ce39ad31c150065f159d95ad3-refs/branch-heads/5005@{#819})

Seleniumのインストール

https://www.selenium.dev/downloads/

Stableのリンクをコピー

例:https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.2.0/selenium-server-4.2.2.jar

wget https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.2.0/selenium-server-4.2.2.jar
sudo cp selenium-server-4.2.2.jar /usr/local/bin/

//JAVAインストール
sudo apt install default-jre

//起動
java -jar /usr/local/bin/selenium-server-4.2.2.jar &

Composerのインストール

php-webdriverのインストールに必要なのでComposerをインストール

curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
composer --version

php-webdriverのインストール

cd [php-webdriverを実行させたいPath=Vendorフォルダを作成したいPath]
composer require php-webdriver/webdriver

動作確認サンプル

vi ./sample.php

//下記コードを貼り付け
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Facebook\WebDriver\Chrome\ChromeOptions;
use Facebook\WebDriver\Chrome\ChromeDriver;
use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Remote\RemoteWebDriver;
use Facebook\WebDriver\WebDriverExpectedCondition;
use Facebook\WebDriver\WebDriverBy;

$driverPath = realpath("/usr/local/bin/chromedriver");
putenv("webdriver.chrome.driver=" . $driverPath);

// chrome option
$options = new ChromeOptions();
$options->addArguments([
    'disable-infobars',
    '--headless',
    //'start-maximized',
    'window-size=1920,1600',
]);

$capabilitites = DesiredCapabilities::chrome();
$capabilitites->setCapability(ChromeOptions::CAPABILITY, $options);
$driver = ChromeDriver::start($capabilitites);

// googleのページ取得
$driver->get('https://www.google.co.jp/');
// 表示されるまで待つ
$driver->wait(2)->until(
    WebDriverExpectedCondition::presenceOfElementLocated(WebDriverBy::name('q'))
);

// キャプチャをとる
$file = "./sample.png";
$driver->takeScreenshot($file);

// ブラウザを閉じる
$driver->quit();

PHPファイルを実行してキャプチャが取れていれば成功

php sample.php
sample.png

バックグラウンドでchromedriverを起動

待受ポートは4444を指定

nohup /usr/local/bin/chromedriver -port=4444 &

自動起動設定

このままだとサーバをrebootするとChromeDriverが自動起動しないので、cronで自動起動設定

vi chrome-autorun.sh

//以下のコードを貼り付け
#!/bin/bash
nohup /usr/local/bin/chromedriver -port=4444 &

Crontabでreboot追記

crontab -e

//以下のコードを追記
@reboot /home/bitnami/chrome-autorun.sh

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です