11
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

クローラー/WebスクレイピングAdvent Calendar 2015

Day 22

Google Play にアップロードした Android アプリが更新されかをスクレイピングで確認する

Last updated at Posted at 2015-12-22

これは クローラー/Webスクレイピング Advent Calendar 2015 の22日目(12/22)の投稿です。

screen12.png

私は最近は Android エンジニアをやっていまして、現在は Android版ネイルブック の開発に携わっています。

今回は CasperJS を利用して、Google Play に新しいバージョンの Android アプリをアップロードした際に、Google Play へ反映されたか確認する方法について紹介します。

背景として、Google Play に Android アプリのバイナリ(*.apk)をアップロードしても反映というか全ユーザが見えるよう伝搬するまで数時間かかる、という事情があります。

ちなみに CasperJS はサーバサードで動作する PhantomJS のラッパーで、任意のWEBサイトをスクレイピングすることができます。画面キャプチャも撮れる他に、内部に WebKit を内蔵しているので、JavaScriptで動的に描写されているWEBサイトのスクレイピングが可能です。過去にも何本か、環境構築等の記事を Qiita に書いたので宜しければ。

方法

環境構築の方法はググるか上記の Qiita の投稿を見てもらうとして、こちらが CasperJS 向けのスクリプトです。

check-google-play.js
var casper = require('casper').create();

var url = casper.cli.get(0); // コマンドライン引数からスクレイピング対象のURLを取得

var results = [];

casper.start(url, function() {
  // 対象のURLにアクセスし条件に一致するタグの中身を取得
  results = this.evaluate(function() {
    var elements = document.querySelectorAll('.content[itemprop=\"softwareVersion\"]');
    return Array.prototype.map.call(elements, function(e) {
      return e.innerHTML;
    });
  });

  // 余分な半角スペースを削除
  var i, length = results.length;
  for (i = 0; i < length; i++) {
    results[i] = results[i].replace(/\ /g,"");
  }

  //this.capture('foo.png'); // もしキャプチャ画像もとる場合
});

casper.run(function() {
  this.echo(results.join(' ')); // 複数ある場合は半角スペースでつなぐ
  this.exit(); // 終了
});

何をやっているかというと、スクレイピング対象(Google Play)のページから「バージョン」の文字列をスクレイピングして抜き出しています。

スクリーンショット_2015-12-21_16_00_24.png

このスクリプトを、対象の Android アプリの Google Play 上の URL を引数にして実行します。

$ casperjs --ignore-ssl-errors=yes check-google-play.js https://play.google.com/store/apps/details?id=jp.nailbook

スクレイピングの対象が https:// のサイトだとエラーになるので --ignore-ssl-errors=yes という風にエラーを無視するようにしています。

成功すると次のように「バージョン」が出力されます。

スクリーンショット_2015-12-21_16_09_14.png

おわりに

この程度なら Google Play をブラウザで見にいった方が早いだろ、という感じがするかもですが、コード化しておくことが重要で、任意のツールと組み合わせることが出来るかなと思います。
あと Google Play の HTML の仕様が変わるとスクレイピングできないので^^; 注意ください。

11
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?