web-dev-qa-db-ja.com

Android Playストアからのデータの取得

Android Playストアのデータを使用するアプリやウェブサイトを見てきました。例えば。トップアプリランキングなどを備えたアプリまたはサイト。しかし、どのようにしてデータを取得できますか?どこから解析できますか?

78
Ahmad

非公式の Androidマーケット向けのオープンソースAPI を使用して、必要な情報を取得することができます。お役に立てれば。

46
lenik

Google Playからアプリとリストデータを取得するために、小さなNode.jsモジュールをコーディングしました: google-play-scraper

var gplay = require('google-play-scrapper');

gplay.List({
    category: gplay.category.GAME_ACTION,
    collection: gplay.collection.TOP_FREE,
    num: 2
  }).then(console.log);

結果:

 [ { url: 'https://play.google.com/store/apps/details?id=com.playappking.busrush',
    appId: 'com.playappking.busrush',
    title: 'Bus Rush',
    developer: 'Play App King',
    icon: 'https://lh3.googleusercontent.com/R6hmyJ6ls6wskk5hHFoW02yEyJpSG36il4JBkVf-Aojb1q4ZJ9nrGsx6lwsRtnTqfA=w340',
    score: 3.9,
    price: '0',
    free: false },
  { url: 'https://play.google.com/store/apps/details?id=com.yodo1.crossyroad',
    appId: 'com.yodo1.crossyroad',
    title: 'Crossy Road',
    developer: 'Yodo1 Games',
    icon: 'https://lh3.googleusercontent.com/doHqbSPNekdR694M-4rAu9P2B3V6ivff76fqItheZGJiN4NBw6TrxhIxCEpqgO3jKVg=w340',
    score: 4.5,
    price: '0',
    free: false } ]
19
Facundo Olano

免責事項:私は42mattersの出身です。このデータは https://42matters.com/api で既に提供されています。お気軽にチェックアウトするか、ご連絡ください。

Lenikが述べたように、GPlayからいくつかのデータを取得するのにすでに役立つオープンソースライブラリがあります。自分で作成したい場合は、Google Playアプリページを解析できますが、次のことに注意する必要があります。

  • 解析しようとしているURLがrobots.txtでブロックされていないことを確認してください。 https://play.google.com/robots.txt
  • あなたがあまりにも頻繁にやっていないことを確認してください、あなたがそれをやりすぎている場合、Googleはスロットルし、潜在的にあなたをブラックリストに載せます。
  • 正しいUser-Agentヘッダーを送信して、実際にボットであることを示します
  • アプリのページが大きい-gzipを受け入れてモバイルバージョンをリクエストしていることを確認してください
  • GPlayウェブサイトはAPIではありません。解析することは気にしないので、時間とともに変化します。必ず変更を処理してください-例期待どおりの結果が得られることを確認するテストを実施します。

そのため、1ページのメタデータを取得するには、ページのhtmlを取得して適切に解析する必要があります。 JSoup を使用すると、次を試すことができます。

      HttpClient httpClient = HttpClientBuilder.create().build();
      HttpGet request = new HttpGet(crawlUrl);
      HttpResponse rsp = httpClient.execute(request);

      int statusCode = rsp.getStatusLine().getStatusCode();

      if (statusCode == 200) {
           String content = EntityUtils.toString(rsp.getEntity());    
           Document doc = Jsoup.parse(content);
           //parse content, whatever you need
           Element price = doc.select("[itemprop=price]").first();
      }      

その非常に単純な使用例で、開始する必要があります。しかし、もっと面白いことをしたいと思うと、事態は複雑になります:

  • ロボットでの検索は禁止されています。
  • アプリのメタデータを最新に保つことは困難です。 2.2m以上のアプリがあり、メタデータを毎日更新したい場合、1日2.2件のリクエストがあり、1)すぐにブロックされ、2)多額の費用がかかります-1つのアプリが100kの場合、1日あたり悲観的な220GBデータ転送
  • 新しいアプリをどのように発見しますか
  • 各国での価格設定、各言語の翻訳はどのように入手しますか

リストは続きます。これをすべて自分で行いたくない場合は、 42matters API を検討できます。これは、検索と検索、上位のGoogleチャート、高度なクエリとフィルターをサポートします。そして、これは35の言語と50か国以上に対応しています。

19
Ivan

Google Playストアはこのデータを提供していないため、サイトは単にデータをスクレイピングしているに違いありません。

5
Sparky

以下に、Google chrome拡張機能を示します。この拡張機能を使用すると、自分のレビューをダウンロードできます。 https://chrome.google .com/webstore/detail/my-play-store-reviews/ldggikfajgoedghjnflfafiiheagngoa?hl = en

0
Nirvana Tikku