「Xamarin.AndroidでGoogle Playからアプリ情報をブッコ抜く」の版間の差分

imported>Administrator
ページの作成:「Xamarin.Androidで強制アップデートを実装する方法はみんなどうやって実装しているのかをググってみていたら、 [[Google Play]...」
 
imported>Administrator
 
(同じ利用者による、間の1版が非表示)
1行目: 1行目:
[[Xamarin.Androidで強制アップデートを実装する]]方法はみんなどうやって実装しているのかを[[ググって]]みていたら、
[[Xamarin.Androidで強制アップデートを実装する]]方法はみんなどうやって実装しているのかを[[ググって]]みていたら、[[Google Play]]から[[スクレイピング]]でバージョン情報を取れば確実だという記事が多かった。
[[Google Play]]から[[スクレイピング]]でバージョン情報を取れば確実だという記事が多かった。


== 利点 ==
== 利点 ==
7行目: 6行目:


== 欠点 ==
== 欠点 ==
* [[スクレイピング]]なのでGoogle Playのデザインが変わると機能しなくなる
* [[スクレイピング]]なので[[Google Play]]のデザインが変わると機能しなくなる
*: [[ググる]]と二種類の方法が出てくるので歴史上1回のデザイン変更が発生している模様
*: [[ググる]]と二種類の方法が出てくるので歴史上1回のデザイン変更が発生している模様


== 実装 ==
== 実装 ==
とりあえずGoogle Playの画面下部にある情報群を[[HtmlAgilityPack]]でブッコ抜いてみる。
とりあえず[[Google Play]]の画面下部にある情報群を[[HtmlAgilityPack]]でブッコ抜いてみる。


現在のデザインではHTMLタグにはその項目固有のidやclassなどは設定されていない。またGoogle Play Consoleでの設定次第で出現項目も変わってくるようだ。そのため「配列の4番目」などと決め打ちにはできない模様。細かい部分はアプリごとに実装しよう。
現在のデザインではHTMLタグにはその項目固有のidやclassなどは設定されていない。またGoogle Play Consoleでの設定次第で出現項目も変わってくるようだ。そのため「配列の4番目」などと決め打ちにはできない模様。細かい部分はアプリごとに実装しよう。


<source>
<source lang="csharp">
     using Android.App;
     using Android.App;
     using Android.Widget;
     using Android.Widget;
39行目: 38行目:
             agent.UserAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Safari/605.1.15";
             agent.UserAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Safari/605.1.15";
             var doc = agent.Load("https://play.google.com/store/apps/details?id=skt.android.mayukoyokubariset&hl=ja");
             var doc = agent.Load("https://play.google.com/store/apps/details?id=skt.android.mayukoyokubariset&hl=ja");
            // パース
             var nodes = doc.DocumentNode
             var nodes = doc.DocumentNode
                           .SelectNodes("//div[contains(@class, 'hAyfc')]/span[contains(@class, 'htlgb')]");
                           .SelectNodes("//div[contains(@class, 'hAyfc')]/span[contains(@class, 'htlgb')]");
            // Google Play Consoleでの設定次第で出現項目が変化するので注意
             Console.WriteLine("更新日   :" + nodes[0].InnerText);
             Console.WriteLine("更新日   :" + nodes[0].InnerText);
             Console.WriteLine("サイズ   :" + nodes[1].InnerText);
             Console.WriteLine("サイズ   :" + nodes[1].InnerText);