Chromiumを用いたスクレイピングをレンタルサーバーで実現できるか、試行と結論

事の始まりは、Chromium と Python を用いたスクレイピングを行おうとしたことです。ローカル環境で色々と準備をし、実行した際はうまくいきました。

なので、次に実際に動かす環境である、私が使っているレンタルサーバー(mixhost)でも、同じことができるかを試した際の状況と最終的にどうしたかについて記載します。

 

結論から言うと、レンタルサーバーで Chromium を用いたスクレイピングは諦めました。

ただ、機能としては必須だったため、Google Cloud functions という Google が提供しているクラウドサービスを使ってやりたいことを実現しました。

 

何が問題になったかなどを書いていきます。

 

mixhost サーバーに Chromium をインストールする

私が大変気に入っている mixhostですが、管理者権限がないため、Linux コマンドで Chromium をいれることができません。

 

そのため、deb ファイルを直接取得しました。

以下のリンクから取得できます。

外部リンク:The Chromium Projects

上で分からない場合は、ここ

外部リンク:download-chromium.appspot.com/

(色々と自己責任で)

 

取得した deb ファイルを任意のフォルダを用意して、ファイル自体を直接アップロードして、deb のインストールコマンドをたたいてインストール。

無事、インストールは完了しました。

動作確認で問題

インストールが無事できたかを確認するため、インストールのフォルダに移動し、Version を確認します。

./chrome --version

うまくインストールが完了し、実行可能であれば version が表示されます。

がしかし、出てきたのは以下のエラーメッセージ

./chrome: error while loading shared libraries: libatk-bridge-2.0.so.0: cannot open shared object file: No such file or directory

Chrome を動かすためのライブラリがないんだと思います。

そもそも、サーバーとして用意されているだけなので、ないわなぁと・・・

ここで、『必要なライブラリを全部入れてみるか』、『別の方法を模索するか』の2択を考えました。

さてどう解決しようか?

『必要なライブラリを全部入れてみるか』

自分が好き勝手できる管理者権限ももってて、壊れてもいい環境なら勉強のためにもこっちを選択してもいいけど、レンタルサーバーでそこまでの時間とリスクをかけるか?と思いました。

 

ちょっと調べてみましたが、おそらくその他にも必要なライブラリはある模様で、どこかで無理がでてくると感じました。

 

ということで、2つめの選択『別の方法を模索するか』にすることにしました。

では、別の方法を考えよう。

 

Switch Pc Computer Circuit - ananitit / Pixabay

Google Cloud Functions を選択する

2日くらい、色々と考え調べました。

要件を変えるかなども考えました。

他の仕組みで作って実績のある、Python & BeautifulSoup を用いるかを考えましたが、今回はスクリーンショットなどの取得も行ってみたかったので、どうしても要件を達成できないので却下したり。

 

そこで、思いついたのが、Google Cloud Platform(以降GCP)やAWSのクラウドサービスを用いることです。

 

Google Cloud Functions(以降GCF) では丁度いいことに、Node.js で Chrome と puppeteer を使用できるように準備ができているためこれを使う事にしました。

Lamda でも実績はあるようですが、GCP を使ったことがなかったので即決めしました。

というか、Node.js も puppeteer もほぼやったこなかったので、ちょうどいいやと思いました。

私のシステム作りのもっとうは、『やったことなくても、目的を得意とする言語や機能があればそれを使う』です。

気を付けること

GCP のだいたいのサービスは基本的には、従量課金です。

使ったら使った分だけ料金が発生します。

 

GCF も例外ではありません。

外部リンク:GCF料金表

それぞれ無料枠もありますが、料金をあらかじめ算出する必要がでてきます。

ある程度、予算を想定して実施するシステム設計となっている場合は、算出された料金が、想定よりも多くなってしまいダメだぁ!!となる場合もあります。

その場合は、GCFを使ったシステム作成をあきらめるしかありません。

 

自前のサーバーを用意するか、Chromium を動かせそうなレンタルサーバーにするか?ですかね。

予算がおさまるように、システム設計を作り替えるのもいいとは思います。

何にせよ従量課金なので、使い過ぎには気をつけましょう。

まとめ

今回は、レンタルサーバーで Chromium を動かそうと試行錯誤した結果から、GCP を選んだ理由までを記載しました。

ローカルで試すのにも、それなりに時間がかかったし、サーバーでできなかった時の絶望感もなかなかでした。

 

情報を探しても、よさそうなのも出てこなかったのでまとめてみました。

GCPを使うとなってからも色々と大変だったので、その辺もちょっとずつ書いていこうとは思います。

 

 

 


読んで頂き、ありがとうございます。
この記事が誰かにとって、一つの参考となれば幸いです。

新たな知識や技術を習得し続けていきたいです。

 

 

 

コメント