it-swarm.com.ru

Получение данных из магазина Android Play

Я видел несколько приложений и веб-сайтов, которые используют данные из магазина Android Play. Например. Приложения или сайты с высоким рейтингом приложений и т.д. Но как получить данные? Откуда я могу разобрать это? 

72
Ahmad

Существует неофициальный API с открытым исходным кодом для Android Market вы можете использовать его для получения необходимой информации. Надеюсь это поможет.

46
lenik

Отказ от ответственности: я из 42matters, который предоставляет эти данные уже на https://42matters.com/api , не стесняйтесь проверить это или напишите нам.

Как упоминал Леник, есть библиотеки с открытым исходным кодом, которые уже помогают получать некоторые данные из GPlay. Если вы хотите создать его самостоятельно, попробуйте проанализировать страницу приложения Google Play, но вам следует обратить внимание на следующее:

  • Убедитесь, что URL-адрес, который вы пытаетесь проанализировать, не заблокирован в файле robots.txt - например, https://play.google.com/robots.txt
  • Удостоверьтесь, что вы делаете это не слишком часто, Google будет ограничивать и потенциально помещать вас в черный список, если вы делаете это слишком много. 
  • Отправьте правильный заголовок User-Agent, чтобы фактически показать, что вы бот
  • Страница приложения большая - убедитесь, что вы приняли gzip и запросили мобильную версию
  • Веб-сайт GPlay не является API, его не волнует, что вы его анализируете, поэтому со временем он изменится. Убедитесь, что вы обрабатываете изменения - например, проведя тест, чтобы убедиться, что вы получите то, что ожидали.

Чтобы получить метаданные одной страницы, нужно выбрать 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,2 млн. Приложений, если вы хотите обновлять их метаданные ежедневно, есть 2,2 запроса/день, что 1) немедленно блокируется, 2) стоит много денег - пессимистичная передача данных 220 ГБ в день, если одно приложение стоит 100 КБ. 
  • Как вы открываете новые приложения
  • Как вы получаете цены в каждой стране, переводы на каждый язык

Список можно продолжить. Если вы не хотите делать все это самостоятельно, вы можете рассмотреть 42matters API , который поддерживает поиск и поиск, лучшие диаграммы Google, расширенные запросы и фильтры. И это для 35 языков и более 50 стран.

20
Ivan

Я написал небольшой модуль Node.js, чтобы очистить приложение и вывести список данных из 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);

Результаты:

 [ { 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

Магазин Google Play не предоставляет эти данные, поэтому сайты должны просто их очищать.

5
Sparky

Вот расширение Google Chrome, которое позволит вам загрузить ваши обзоры: https://chrome.google.com/webstore/detail/my-play-store-reviews/ldggikfajgoedghjnflfafiiheagngoa?hl=en

0
Nirvana Tikku