LoginSignup
14
15

More than 5 years have passed since last update.

macOS で Headless Chrome を試す

Last updated at Posted at 2017-04-18

Headless Chrome とは?

Headless Chrome とは、Google Chrome の ヘッドレスモードのことを指します。

ヘッドレスモードでは、実際には画面描画を行わずにWebページを読み込む等の動作を行うことができます。これの何が嬉しいのかというと思うかもしれませんが、ヘッドレスモードを用いることでCLIからWebブラウジング操作をすることができます。つまり、スクレイピングができるのです。

なぜ Headless Chrome なのか?

スクレイピングと言えば、まず Nightmare.js とか Phantom.js が思い浮かびますよね。では、なぜそれらのツールを使わず Headless Chrome を使うのか。

まずこれらは、実際に使われているブラウザではないため、特有の問題が発生する場合があるようです。また、例えば Nightmare.js は Electron を用いて実装されていますが、それ故に実際の画面やウィンドウマネージャーを持たない環境では起動できない場合があるようです。

さらに先日、 Phantom.js 唯一のメンテナーが Headless Chrome の登場を理由に辞任を表明しました1

macOS で使うのは少し面倒

そんな期待の Headless Chrome ですが、Linux 上からは便利なコマンドツールが揃っているようですが、macOSから使うにはひと工夫必要なようです。ここからは実際に macOS で Headless Chrome を使う方法を紹介します。

Google Chrome Canary をインストールする

Chrome のヘッドレスモードは、Chrome 59 から利用できる機能です。2017年4月19日現在、Google Chrome の安定最新版はバージョン57系なのでヘッドレスモードは利用できません。利用するためには、開発版である Google Chrome Canary をインストールする必要があります。

Google Chrome Canary は Google Chrome Canary ダウンロードページ から、または Homebrew cask を利用した以下のコマンドでインストールすることができます。

$ brew install Caskroom/versions/google-chrome-canary

ヘッドレスモードで起動する

Chrome をヘッドレスモードで起動するには、コマンドライン上からオプション付きで Chrome を実行する必要があります。おそらく、Google Chrome Canary.app/Applications ディレクトリ内にインストールされているはずなので、その中に含まれる実行ファイルを以下のように呼び出します。

$ /Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary --headless --remote-debugging-port=9222 --disable-gpu https://chromium.org

これで、 https://chromium.org にヘッドレスモードでアクセスしに行っているはずです。動作を確認するため http://localhost:9222 にアクセスしてみると、リモートデバッギングツールの画面が表示されるはずです。表示されているリンクを踏むと、デバッギングツール内で詳細な内容が確認できます。

スクリプトからの操作は次回

だいぶ長くなったので、スクリプトからの操作は分割して別で投稿します。

追記: スクリプトからの操作について書きました。以下からどうぞ。
macOS で node.js から Headless Chrome を操作してスクレイピング

参考

14
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
15