「スクレイピング」と掛けまして、
「幼稚園の主役」と、ときます。
そのココロは・・・
自動(児童)です。
RPAが大好きな、ユゲタです。
これまで、phantomjsで便利にスクレイピング処理をやってきていたんですが、2018年にphantonjsの開発が2018年6月に終了していたんですね。
https://jser.info/2018/06/11/phantomjs-ended/
そこで、それに変わるシステムを構築しなくてはいけなくなったので、探してみた所、GoogleのChromeチームがデバッグ機能として使用しているツールを、ヘッドレスブラウザとして公開している事を知りました。
Puppeteer
https://github.com/puppeteer/puppeteer/
githubにアップされているコードもかなり参考になりますが、環境へのインストールはnpmで行うのがよさそうです。
npm i puppeteer
基本的に、何ができるのかというと、ヘッドレスブラウザとしての機能は十分に備えています。
WEBサイトの画面キャプチャや、サイト内でのjavascriptの実行、色々なイベントアクションの実行などなど・・・
すでにたくさんのエンジニアが、使い方ブログをアップされているので、非常に参考になります。
参考
Puppeteerでできることまとめ
Puppeteerのセットアップから使い方まで〜ブラウザ操作の自動化〜
puppeteerでスクレイピング
Puppeteerの使い方(スクレイピング, フロントテストで活用)
Puppeteerでスクレイピング
puppeteerを用いてラクスのエンジニアブログに自動でアクセスしてみた
まだまだあります。
Googleで検索
phantomjsとの違いについて
僕の環境では、Phantomjsシステムからのリプレイス作業をしなければいけないのですが、相違点はどんなところがあるかというと、
個人的にネイティブjavascriptで作った自分ライブラリを便利に使いたかったので、casperjsとspookyjsを組み合わせた環境で使っていたので、非常にややこしい環境だったのが、puppetter1つのみの環境になったので、非常にシンプルになりました。
出来ることは、そんなに大差ないのですが、今後時間があれば、速度比較などはやっておきたいですね。
あと、phantomjsは開発が終了しているので、今後使い続ける理由がなくなったので、比較すること自体無意味ですね・・・
試しにやった画面キャプチャ
他サイトで紹介されているやり方をそのまま実行してみたらまともに動かない事が多かったので、よくよく考えてみた所、サーバーで利用したい場合、Chromeブラウザがインストールされている必要がありました・・・そらそうですよね・・・
テストツールとして使っている人は、macなどにインストールされているchromeブラウザを自動操作するような使い方をしているケースもありましたね。
個人的にはRPAとして、サーバーでのヘッドレスブラウザで使いたかったので、Chromiumをインストールして使うことにしました。
ローカル環境で便利に使えるようにとDockerにnodejs用のコンテナを立ち上げて使用するのが自分流です。(今どきの一般的ですかね)
その際に問題が発生したんですが、日本語ページが文字化けしてしまいました。
これは、サーバー側に日本語フォントをインストールすることで解決したので、以下のDockerファイルをその時に使用したので、お困りの方は、使ってみてください。
FROM node:12.4.0-alpine
RUN apk update \
&& apk add --no-cache curl fontconfig \
&& curl -O https://noto-website.storage.googleapis.com/pkgs/NotoSansCJKjp-hinted.zip \
&& mkdir -p /usr/share/fonts/NotoSansCJKjp \
&& unzip NotoSansCJKjp-hinted.zip -d /usr/share/fonts/NotoSansCJKjp/ \
&& rm NotoSansCJKjp-hinted.zip \
&& fc-cache -fv
RUN apk add --no-cache chromium
RUN apk add --no-cache yarn
やっぱりGoogle、リファレンスがイケてる
https://github.com/puppeteer/puppeteer/blob/master/docs/api.md
Puppeteerは、リファレンスもなかなかのボリュームなのですが、サンプルコードなどものせていて、かなりわかりやすくなっています。
え?英語が読めないって?そこは、エンジニアなら英語も修得しましょうよ、と自分に言い聞かせるユゲタでした。
0 件のコメント:
コメントを投稿