1. Perl
  2. モジュール
  3. here

Selenium::Chrome - Chromeを使ったJavaScript対応のWebスクレイピング

Selenium::Chromeを使うと、Chromeを使ったJavaScript対応のWebスクレイピングができます。Selenium::ChromeはSelenium::Remote::DriverをChrome用に拡張したものです。Selenium::Remote::Driverをインストールすると利用できるようになります。

Windows, Macで実行する場合

# Windows, Macで実行する場合
use Selenium::Chrome;
my $driver = Selenium::Chrome->new;
$driver->get('http://www.google.com');
print $driver->get_title();
$driver->shutdown_binary();

Unix/LinuxなどGUI画面がない場合に、ヘッドレス実行する場合

GUI環境がない場合にCUI画面で実行する場合は以下のようにヘッドレス実行します。

# Unix/LinuxなどGUI画面がない場合に、ヘッドレス実行する場合
use Selenium::Chrome;
my $driver = Selenium::Chrome->new(
  extra_capabilities => {
    'goog:chromeOptions' => {
      args => ['headless', 'disable-gpu', 'window-size=1920,1080', 'no-sandbox' ]
    }
  }
);
$driver->get('http://www.google.com');
print $driver->get_title();
$driver->shutdown_binary();

以下のようなエラーが発生した場合は、上記のオプションをつけてヘッドレス実行してください。

Could not create new session: unknown error: Chrome failed to start: exited abnormally.

(unknown error: DevToolsActivePort file doesn't exist) (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.) at access.pl line 79.

実行環境の準備

Selenium::Chromeを使ったJavaScript対応のWebスクレイピングの実行環境として、Chromeブラウザ本体とChromeDriverが必要になります。ChromeDriverはChrome本体を操作するためのソフトウェアです。環境構築手順はOSによって異なります、以下を参考にしてください。

バイナリ互換性の問題が発生しないように、Chromeブラウザ本体とChromeDriverのバージョンはできる限り合わせるのが良いです。

Unix/Linuxの場合

ChromeDriverをインストールする - Cent OS 7

Google Chromeをインストールする - CentOS 7

Ubuntu、Debian、FreeBSDなどの他のUNIX/Linuxの場合は、Chromeブラウザ本体とChromeDriverのインストール方法を検索してみましょう。

Windows

SPAサイトにおいて、Selenium::Remote::DriverでGUIテストを行うの環境構築手順が参考になります。

Active PerlでもStrawberry Perlでも大丈夫かと思います。

Macの場合

Perl から Selenium を使うの環境構築手順が参考になります。

Perlテキスト処理のエッセンス
  • 初級者向け・テキスト処理と正規表現の基本をマスター
業務に役立つPerl
  • 実務者向け・ログ解析など日本語を含むテキスト処理の実践!
Perlクラブ
  • 仲間と出会い
    ゆとりあるエンジニアライフを送る