Pobieranie danych ze sklepu Android Play [zamknięte]

83

Widziałem aplikacje i strony internetowe, które używają danych ze sklepu Android Play. Np. Aplikacje lub witryny z najlepszymi rankingami aplikacji itp. Ale w jaki sposób można uzyskać dane? Skąd mogę to przeanalizować?

Ahmad
źródło
Otwarte pytania i odpowiedzi na stronie OpenData: tutaj i tutaj i tutaj
philshem
@Umair nie, dziękuję. to pytanie ma więcej niż 5 lat.
Ahmad

Odpowiedzi:

47

Istnieje nieoficjalny interfejs API typu open source dla Android Market, którego możesz użyć, aby uzyskać potrzebne informacje. Mam nadzieję że to pomoże.

Lenik
źródło
Zakładam, że wcześniej korzystałeś z tego interfejsu API. Czy możesz mi pomóc z problemem? Oto moje pytanie dotyczące API: stackoverflow.com/questions/10281232/…
Ahmad
@lenik jak mogę używać tego interfejsu API w języku C #?
Elad Benda
cześć, czy udało Ci się uzyskać to, czego potrzebujesz, używając powyższego interfejsu API? Szukam też sposobu na odniesienie się do muzyki ...
vinnybad
jest to specyficzne dla Androida, gdzie większość zastosowań jest związanych z siecią, jak PHP; jedyne, co może zeskrobać za pomocą PHP, to identyfikator urządzenia i jeden zrzut ekranu, który jest niczym w porównaniu z innym API ..
Hunain Usman
Jak korzystać z tego interfejsu API, aby uzyskać szczegóły gry z Google Play przy użyciu PHP. Nie wiedziałem jak zacząć? oto moje pytanie. Proszę, odpowiedz mi ... stackoverflow.com/questions/23622898/
21

Zastrzeżenie: Jestem z 42matters, który podaje te dane już na https://42matters.com/api , zapraszam do sprawdzenia lub napisz do nas.

Jak wspomniał Lenik, istnieją biblioteki open source, które już pomagają w uzyskaniu niektórych danych z GPlay. Jeśli chcesz stworzyć własną aplikację, możesz spróbować przeanalizować stronę aplikacji Google Play, ale zwróć uwagę na następujące kwestie:

  • Upewnij się, że adres URL, który próbujesz przeanalizować, nie jest zablokowany w pliku robots.txt - np. Https://play.google.com/robots.txt
  • Upewnij się, że nie robisz tego zbyt często, Google dusi i potencjalnie umieszcza na czarnej liście, jeśli robisz to za dużo.
  • Wyślij poprawny nagłówek User-Agent, aby faktycznie pokazać, że jesteś botem
  • Strona aplikacji jest duża - upewnij się, że akceptujesz gzip i poproś o wersję mobilną
  • Witryna GPlay nie jest interfejsem API, nie obchodzi go, że ją przeanalizujesz, więc będzie się zmieniać z czasem. Upewnij się, że obsługujesz zmiany - np. Przeprowadzając testy, aby upewnić się, że otrzymujesz to, czego się spodziewałeś.

Więc mając na uwadze, że uzyskanie metadanych jednej strony jest kwestią pobrania kodu HTML strony i prawidłowego jej przeanalizowania. Z JSoup możesz spróbować:

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

W tym bardzo prostym przypadku użycia, od którego powinieneś zacząć. Jednak w momencie, gdy chcesz robić bardziej interesujące rzeczy, sprawy się komplikują:

  • Wyszukiwanie jest zabronione w robotach.
  • Utrzymywanie aktualności metadanych aplikacji jest trudne. Istnieje ponad 2,2 miliona aplikacji, jeśli chcesz codziennie odświeżać ich metadane, jest 2,2 żądań / dzień, które 1) zostaną natychmiast zablokowane, 2) kosztuje dużo pieniędzy - pesymistyczny transfer danych 220 GB dziennie, jeśli jedna aplikacja ma 100000
  • Jak odkrywasz nowe aplikacje
  • Jak uzyskać ceny w każdym kraju, tłumaczenia w każdym języku

I tak dalej. Jeśli nie chcesz robić tego wszystkiego sam, możesz rozważyć 42matters API , które obsługuje wyszukiwanie i wyszukiwanie, najlepsze wykresy Google, zaawansowane zapytania i filtry. I to dla 35 języków i ponad 50 krajów.

[2]:

Ivan Delchev
źródło
Cześć Ivan i witaj w stackoverflow. Dziękuję za Twoją odpowiedź. W przypadku przyszłych odpowiedzi prosimy o podanie jak największej ilości informacji i szczegółów. Jeśli masz jakieś próbki kodów lub linki do samouczków / dokumentacji, udostępnij je. W przypadku tego pytania nie można dodać zbyt wielu informacji, więc ta odpowiedź jest w porządku. To tylko sugestia dotycząca przyszłych działań w SO. Dziękuję
Springrbua,
2
Pobieranie recenzji użytkowników nie jest obecnie obsługiwane przez 42matters API (co poza tym jest całkiem przyjemne). Mamy nadzieję, że uchroni to kogoś przed utworzeniem, a następnie porzuceniem konta.
acj
Google Market API jest najlepszy pod względem informacji rynkowych Google Play, ale nie jest komercyjnie darmowy: p
Hunain Usman
72
Ta usługa jest bardzo droga
mate64
Jak uzyskać dane „Użytkownicy podobają się też” dla Twojego interfejsu API? Współpracujesz z Google? Ponieważ nie da się tego osiągnąć, przemierzając rynek ...
Marian Klühspies
20

Zakodowałem mały moduł Node.js do pobierania aplikacji i wyświetlania danych z 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);

Wyniki:

 [ { 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 } ]
Facundo Olano
źródło
19
Myślę, że to wszystko są publicznie dostępne dane. Byłoby zabawne, gdyby google powiedział „hej, nie indeksuj mojej witryny”.
Facundo Olano
Jak używać tego z PHP do implementacji na stronie internetowej?
ama rullz amarullzz
To jest pakiet Node.js. Możesz zbudować prostą aplikację węzła, aby zrzucić to do bazy danych, lub możesz ją połączyć z browserify, aby uruchomić ją z przeglądarki. Możesz również użyć tego opakowania, które napisałem, jeśli chcesz udostępnić go jako RESTful API.
Facundo Olano
1
dzięki stary, szukałem takiego narzędzia. Właściwie chciałem uzyskać recenzje aplikacji innej firmy, do której nie mam dostępu do konsoli programisty gry, a API od Google prosi o token dostępu. Chciałbym poznać podstawową architekturę modułu węzła, w jaki sposób pobiera recenzję ze sklepu Play?
Prateek Jain
1
Obiecujący projekt znalazłem również na github github.com/s101d1/CSPlayStoreScraper .
smedasn
5

Sklep Google Play nie dostarcza tych danych, więc strony muszą je po prostu skrobać.

iskrzący
źródło
2
Nie (dłużej?) 100% prawdziwe, zobacz Formatowanie danych JSON przy użyciu PHP, aby zapoznać się z przykładem interfejsu XHR, który można znaleźć pod adresem https://play.google.com/store/xhr/getdoc- więc jest oczywiście oferowany przez samo Google Play. Jednak zwrócone wyniki wymagają pewnych korekt, aby były użyteczne (coś jak zastąpienie 4 znaków w pierwszej linii czymś takim jak data =przed wykonaniem eval()na nich).
Izzy
Słuszna uwaga. Nie wiedziałem o bibliotekach, które ludzie napisali, aby uzyskać dostęp do nieudokumentowanego API. O ile wiem, Sklep Play nie obsługuje go do ogólnego użytku.
Sparky
1
Nie wiem. Próbowałem obu ( HerokuApp i ten z mojego poprzedniego komentarza), bez problemów. Heroku dostarcza niezły JSON, ale niestety brakuje całkowitej liczby głosów - podczas gdy drugi dostarcza wszystko, ale w okropnym formatowaniu ...
Izzy
1
@Izzy Link już nie działa
Dennis Guse
@Dennis nic nie mogę na to poradzić, wydaje się, że odpowiedź została usunięta. Nawet gdyby tak nie było, ta aplikacja zniknęła na dobre, nawet ich domena (playstoreapi.com) jest teraz „na sprzedaż”.
Izzy,