Получение данных из Android Play Store [закрыто]
Я видел некоторые приложения и веб-сайты, которые используют данные из магазина Android Play. Например, приложения или сайты с высоким рейтингом приложений и т. д. Но как вы можете получить данные? Откуда я могу его разобрать?
5 ответов:
есть неофициальное API с открытым исходным кодом для Android Market вы можете попробовать использовать, чтобы получить необходимую информацию. Надеюсь, это поможет.
отказ от ответственности: я из 42matters, который предоставляет эти данные уже на https://42matters.com/api, Не стесняйтесь проверить его или напишите нам.
как упоминал Леник, есть библиотеки с открытым исходным кодом, которые уже помогают с получением некоторых данных из GPlay. Если вы хотите построить его самостоятельно, вы можете попробовать разобрать страницу приложения Google Play, но вы должны обратить внимание на следующее:
- убедитесь, что URL, который вы пытаетесь разобрать не заблокирован в роботах.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 ГБ в день, если одно приложение 100k
- как вы открываете новые приложения
- как вы получаете цены в каждой стране, переводы каждого языка
список можно продолжить. Если вы не хотите делать все это самостоятельно, вы можете рассмотреть 42matters по API, который поддерживает поиск и поиск, верхние диаграммы google, расширенные запросы и фильтры. И это для 35 языков и более чем 50 стран.
я закодировал небольшой узел.JS модуль для очистки приложения и списка данных из Google Play:google-play-скребок
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 } ]
вот расширение google chrome, которое позволит вам скачать код отзывы: https://chrome.google.com/webstore/detail/my-play-store-reviews/ldggikfajgoedghjnflfafiiheagngoa?hl=en