WEBサイトの改修を検知するプログラムがそれなりにうまくいきそうなのですが、改修があったときにyamlの文字列を見てもピンと来ません。
というわけで、PythonからSeleniumを介してPhantomJSを動作させ、 スクリーンショットを撮ることにしました。
PhantomJS でログインが必要なページでも自由自在にスクレイピング - 凹みTips
PhantomJS はヘッドレスな(ブラウザ画面のない)QtWebKit ベースのブラウザで、JavaScript の API を通じて、そのブラウザを自由自在にあやつることが出来ます。使用シーンとしては、Jenkins などの CI ツールとの組み合わせによる Web ページの GUI の自動テストや、Web ページのスクリーンキャプチャ、スクレイピングなどが挙げられます。
実行環境
botとかクローラー動かすのに使っているさくらVPSで試してみました。
$ cat /etc/redhat-release CentOS release 6.8 (Final) $ arch x86_64
node.jsのインストール
sudo yum install epel-release sudo yum install nodejs npm --enablerepo=epel # sudo yum install gcc gcc-c++ # 元々インストールしていたので入れなかった
PhantomJSのインストール
npm -g install phantomjs
Pythonにselenium webdriverをインストールする
元々pvenvを使って、Python3.5(Anaconda2.5)を入れていたのでインストール手順は端折ります。
$ python -V Python 3.5.1 :: Anaconda 2.5.0 (64-bit)
Seleniumをインストールします。
# ユーザー権限のpyenv環境上なのでsudoいらない
pip install selenium
Pythonのコードの実行
stackoverflowの記事を参考に、 スクリーンショットを撮るプログラムを書きました。
from selenium import webdriver driver = webdriver.PhantomJS() # パスは特に指定する必要はありませんでした driver.set_window_size(1024, 768) driver.get('https://google.com/') driver.save_screenshot('screen.png') driver.close()
以下のファイルが保存できました。これは問題なく使えそうですね。