【GAS】スクリーンショット機能導入への道について(Pythonならめちゃくちゃ簡単なのに)
部屋の暖房が故障し、あまりに寒くて、この寒さをお裾分けできるダジャレがないかを日々考案しているpikiです。(最近のハマりはヘヤサミーホールディングスです・・・)
前回、楽天市場のランキングで自店商品が上位に挙がっているかどうかチェックするスクリプトを公開させていただきました。
https://note.com/pika_py/n/n829f6616db78
今回はその続きで、ページのスクリーンショット機能の導入に向けてのつぶやきです。正直なところ、GASでの導入は初心者の私にはいばらの道になることが見えております・・・何とか実装できないか、そのとっかかりを備忘録程度にまとめます
Pythonなら秒で導入可能!?「PhantomJS」について
実はPythonだとスクリーンショットは瞬殺です。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
#PhantomJS Webdriverオブジェクト作成
driver = webdriver.PhantomJS()
#URLページのスクリーンショット画像を作成(カレントフォルダにPNG形式で)
driver.get("https://ranking.rakuten.co.jp/daily")
driver.save_screenshot("screenshot-result.png")
なんとこれだけ・・・
使用しているのは「Selenium」というツールとその中に含まれる「PhantomJS」というヘッドレスブラウザです。
Seleniumとは、様々なブラウザを自動操作できるツールで、元々Webアプリケーションの自動テストツールとして発展してきたものだそうです。Seleniumには、ブラウザを操作できる数々のWebドライバーが存在しますが、その中でも画面を必要とせずにWeb操作が可能なPhantomJSというドライバーがあり、これが今回のスクリプトの要となっております。
専用のツールのため、追加でPCにダウンロードが必要ですが、Python開発環境のAnacondaなら導入が非常に簡単です。
上記サイトにある「conda install -c conda-forge phantomjs」というコマンドを・・・
上記のプロンプトに入力してインストールするだけ!
なんと簡単なのでしょうか・・・
インストール後、上記スクリプトを実行すると下記のように容易にスクリーンショットが取れます。(最初だけ警告が出ますが、すべてOKで進めていけば使えます。)
PhantomJSはGASで使用可能?→APIを利用すればできそう
Pythonは私的での利用は簡単ですが、会社のPC環境だとセキュリティ上難しい・・・ということで、GASで何とかこのPhantomJSを使用できないか模索を始めました。GASを取り扱うサイトや記事が少なく、なかなかヒットしませんでしたが、ようやく一筋の光ともなる下記のサイト様の記事を発見しました。
とにかくすごいの一言です。趣味レベルの私にはとても作成できるスクリプトではありませんが、こちらのツールの中に、PhantomJSを利用してWeb操作をされている箇所がありました。こちらを参考にGASでPhantomJSを利用し、スクリーンショットを撮影&保存するスクリプト構築していきたいと思います。
最後に
今回はあくまで着想段階ということでスクリプトの進捗はありませんが、おおよそ道筋が見えてきました。言語ごとの得意不得意領域はどうしても存在しますが、会社のPCではやはり環境に左右されないGASに頼らざるを得ず、Pythonでは一瞬で可能となる機能も、非常に回り道をしなくてはなりません。今回のスクリーンショット機能の導入は自身のスキルをアップさせるにはとてもいい案件であると思いますので、何が何でも導入を目指していきたいなと思います。時間はかかってしまうかもしれませんが、更新は続けてまいりますので、引き続きご閲覧いただけますと幸いです。