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
バックグラウンドで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