クローラーって便利だよね。
Web上のデータを集めるときにササッとクローリングできるとすごく楽です。
概要
CentOS7にクローラー用のHeadlessブラウザをインストールしたい!
しかし、クローラーを作るのって結構大変です。
なにが大変かって、その環境構築の面倒くささ。
昔はPhantomJS(QtWebKitをベースにしたヘッドレスブラウザ)を使えば、
yumで簡単に入るしそれなりに良かったけど、
今では開発がほぼ止まって今後は使い物になりません。
Brave, Edgeが相次いでchromiumを採用した今では
HeadlessChrome(Blinkをベースにしたヘッドレスブラウザ)を使わない手はありません。
HeadressChromeの開発者は下記のように言っています。
ヘッドレス Chrome は PhantomJS に似ています。どちらもヘッドレス環境での自動化テストに使われます。大きな違いは、PhantomJS が古い WebKit を使用するのに対し、ヘッドレス Chrome は最新版の Blink を使用するということです。
https://developers.google.com/web/updates/2017/04/headless-chrome?hl=ja
ただ問題なのがこのchromium
環境構築でまあつまづきやすいです。
PuppeteerやHeadresChromeの公式見ても、○iitaみても
基本的にHeadressChromeを設定するので一苦労です。
ライブラリは足りないし、権限で起動しないしモードがおかしいし、
クローラーや自動テストのコードを書く人にとって
こんなめんどくさいのはやってられません。
てなわけでDockerImageにしてしまおう1!
クローラー用Headless Chrome入りDockerImage
用意したDockerImageには下記環境を作ってあります。
DockerImageにインストール・設定済みの項目
- CentOS7
- Headless Chrome
- Python3.5
- NodeJS8
NodeJSもPythonも入ってあるので
Seleniumもすぐ使えるし、Puppeteerもすぐに使えます。
HeadlessChromeを使うけど、PuppeteerかSeleniumかは決めてない。
PythonもNodeJSも使う。って人には最適のイメージです。
HeadlessChrome入りDockerImageの起動方法
そのまま起動しても動きますが、
カレントのワークスペースをマウントするのがいいかと思います。
1 |
$ docker run -it -v `pwd`/:/app noffuy/centos7_headresschrome_dev |
python seleniumはpipでインストールしていますが、
puppeteerは入れてませんので
npm install --save puppeteer
などでインストールしてください。
一点、Python3.5はyumを通してインストールしているので
実行の際にはpythonではなくpython3.5と打つようにしてください。
1 |
$ python3.5 hogehoge.py |
ではでは素敵なクローリングライフを。
じゃあね〜〜〜。