web-dev-qa-db-fra.com

Obtenir des données depuis Android Play Store

J'ai vu des applications et des sites Web qui utilisent les données du Play Store Android. Par exemple. Applications ou sites avec le meilleur classement d'applications, etc. Mais comment pouvez-vous obtenir les données? D'où je peux l'analyser? 

72
Ahmad

Il existe une API non officielle open-source pour Android Market que vous pouvez essayer d'utiliser pour obtenir les informations dont vous avez besoin. J'espère que cela t'aides.

46
lenik

Disclaimer: Je viens de 42matters, qui fournit ces données déjà sur https://42matters.com/api , n'hésitez pas à les consulter ou à nous laisser un message.

Comme Lenik l'a mentionné, des bibliothèques à code source ouvert aident déjà à obtenir certaines données de GPlay. Si vous souhaitez en créer un vous-même, vous pouvez essayer d'analyser la page de l'application Google Play, mais vous devez faire attention aux points suivants:

  • Assurez-vous que l’URL que vous essayez d’analyser n’est pas bloqué dans le fichier robots.txt - par exemple. https://play.google.com/robots.txt
  • Assurez-vous que vous ne le faites pas trop souvent, Google vous étranglera et vous mettra éventuellement sur une liste noire si vous le faites trop. 
  • Envoyez un en-tête User-Agent correct pour montrer que vous êtes un bot
  • La page d'une application est volumineuse. Assurez-vous d'accepter gzip et de demander la version mobile.
  • Le site Web de GPlay n'est pas une API, cela ne sert à rien que vous l'analysiez pour que cela change avec le temps. Assurez-vous de gérer les modifications - par exemple, en ayant le test pour s'assurer que vous obtenez ce que vous attendiez.

Donc, pour que les métadonnées d’une page soient à l’esprit, il faut récupérer le code HTML de la page et l’analyser correctement. Avec JSoup vous pouvez essayer:

      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();
      }      

Pour ce cas d'utilisation très simple, cela devrait vous aider à démarrer. Cependant, au moment où vous voulez faire des choses plus intéressantes, les choses se compliquent:

  • La recherche est interdite dans les robots. 
  • Il est difficile de garder les métadonnées de l'application à jour. Il y a plus de 2,2 millions d'applications, si vous souhaitez actualiser leurs métadonnées quotidiennement, il y a 2,2 demandes/jour, qui 1) sera immédiatement bloqué, 2) coûtera très cher - transfert de données pessimiste de 220 Go par jour si une application vaut 100 000 $ 
  • Comment découvrez-vous de nouvelles applications
  • Comment obtenez-vous des prix dans chaque pays, des traductions de chaque langue?

La liste continue. Si vous ne voulez pas tout faire vous-même, vous pouvez envisager 42matters API , qui prend en charge la recherche et la recherche, les meilleurs graphiques Google, les requêtes avancées et les filtres. Et ceci pour 35 langues et plus de 50 pays.

20
Ivan

J'ai codé un petit module Node.js pour extraire l'application et la liste des données de Google Play: 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);

Résultats:

 [ { 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 } ]
18
Facundo Olano

Le Google Play Store ne fournit pas ces données. Les sites doivent donc simplement les récupérer.

5
Sparky

Voici une extension google chrome qui vous permettra de télécharger les vos critiques: https://chrome.google.com/webstore/detail/my-play-store-reviews/ldggikfajgoedghjnflfafiifeaghgoa?hl=fr

0
Nirvana Tikku