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 を使うの環境構築手順が参考になります。