Android Play 스토어에서 데이터 가져 오기 [닫힘]


83

Android Play 스토어의 데이터를 사용하는 일부 앱과 웹 사이트를 보았습니다. 예 : 앱 순위가 가장 높은 앱 또는 사이트 등.하지만 데이터를 어떻게 얻을 수 있습니까? 어디서 파싱 할 수 있습니까?


OpenData 사이트에 공개 Q & A가 있습니다 : 여기여기 그리고 여기
philshem

@Umair 감사합니다. 이 질문은 5 년이 넘었습니다.
Ahmad

답변:


47

필요한 정보를 얻기 위해 사용할 수 있는 Android 마켓 용 비공식 오픈 소스 API 가 있습니다. 도움이 되었기를 바랍니다.


이전에이 API를 사용했다고 가정합니다. 문제 해결을 도와 주시겠습니까? API에 관한 내 질문은 다음과 같습니다. stackoverflow.com/questions/10281232/…
Ahmad

@lenik이 APi를 C #과 함께 사용하려면 어떻게해야합니까?
Elad Benda

안녕하세요, 위의 API를 사용하여 필요한 것을 얻을 수 있었습니까? 나도 음악을 참조하는 방법을 찾고 있어요 ...
vinnybad

이것은 안드로이드에 따라 다르며, PHP와 같은 웹과 관련된 대부분의 사용법이 있습니다. PHP를 사용하여 스크랩 할 수있는 유일한 것은 장치 ID와 다른 API와 비교할 수없는 하나의 스크린 샷입니다.
Hunain Usman 2014-04-15

이 API를 사용하여 PHP를 사용하여 Google Play에서 게임 세부 정보를 얻는 방법. 시작하는 방법을 몰랐습니까? 여기 내 질문이 있습니다. 대답 해주세요 ... stackoverflow.com/questions/23622898/…

21

면책 조항 : 나는 이미 https://42matters.com/api 에서이 데이터를 제공하는 42matters 출신입니다. 자유롭게 확인하거나 저희에게 연락주세요.

lenik이 언급했듯이 이미 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();
      }      

시작해야 할 매우 간단한 사용 사례입니다. 그러나 더 흥미로운 일을하고 싶은 순간 상황이 복잡해집니다.

  • 로봇에서는 검색이 금지되어 있습니다.
  • 앱 메타 데이터를 최신 상태로 유지하는 것은 어렵습니다. 220 만 개 이상의 앱이 있습니다. 매일 메타 데이터를 새로 고치려면 하루에 2.2 개의 요청이 있습니다. 1) 즉시 차단되고 2) 많은 비용이 듭니다. 하나의 앱이 10 만인 경우 하루에 220GB 데이터 전송이 비관적입니다.
  • 새로운 앱을 어떻게 발견합니까
  • 각 국가의 가격, 각 언어의 번역은 어떻게 받습니까?

목록은 계속됩니다. 혼자서이 모든 작업을 수행하고 싶지 않다면 조회 및 검색, 상위 Google 차트, 고급 쿼리 및 필터를 지원하는 42matters API를 고려할 수 있습니다 . 그리고 이것은 35 개 언어와 50 개 이상의 국가에 적용됩니다.

[2] :


안녕하세요 Ivan과 stackoverflow에 오신 것을 환영합니다. 답변 주셔서 감사합니다. 향후 답변을 위해 가능한 한 많은 정보와 세부 사항을 제공하십시오. 코드 샘플이나 튜토리얼 / 문서 링크가 있다면 공유하세요. 이 질문에 대해서는 많은 정보를 추가하는 것이 실제로 불가능하므로이 대답은 괜찮습니다. SO에서의 향후 활동에 대한 제안입니다. 감사합니다
Springrbua 2014

2
사용자 리뷰 가져 오기는 현재 42matters API에서 지원되지 않습니다 (그렇지 않으면 꽤 좋습니다). 바라건대 이것은 누군가가 계정을 만들고 포기하는 것을 막을 것입니다.
acj

구글 마켓 API는 구글 플레이 마켓 정보에 가장 적합하지만 상업적으로 무료는 아닙니다. : p
Hunain Usman 2014

72
이 서비스는 매우 비싼
mate64

API에 대한 "사용자도 좋아함"데이터를 얻으려면 어떻게해야합니까? ? 키우면 불가능 시장을 크롤링하여 해당를 얻을 수 있기 때문에 ... 구글 협력
마리아 Klühspies

20

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
이것은 모두 공개적으로 사용 가능한 데이터입니다. "내 사이트를 크롤링하지 마세요"라고 말하는 재미있는 Google이 될 것입니다.
Facundo Olano 2015 년

이것을 PHP와 함께 사용하여 웹 사이트에 구현하는 방법은 무엇입니까?
ama rullz amarullzz

이것은 Node.js 패키지입니다. 간단한 노드 앱을 빌드하여이를 데이터베이스에 덤프하거나 브라우저에서 실행하기 위해 browserify와 함께 번들로 제공 할 수 있습니다. RESTful API로 노출하려면 내가 작성한 이 래퍼를 사용할 수도 있습니다 .
Facundo Olano 2016

1
감사합니다. 저는 이와 같은 도구를 찾고있었습니다. 나는 실제로 플레이 개발자 콘솔 액세스 권한이없는 타사 앱에 대한 리뷰를 받고 싶었고 Google API가 액세스 토큰을 요청하고 있습니다. 노드 모듈의 기본 아키텍처를 알고 싶습니다. Play 스토어에서 리뷰를 어떻게 가져 옵니까?
Prateek Jain

1
또한 github github.com/s101d1/CSPlayStoreScraper 에서 유망한 프로젝트를 찾았습니다 .
smedasn

5

Google Play 스토어는이 데이터를 제공하지 않으므로 사이트에서 데이터를 스크랩해야합니다.


2
100 % 사실이 아닙니다 . XHR 인터페이스의 예는 PHP사용하여 JSON 데이터 형식화를 참조하세요 . XHR 인터페이스의 예는 https://play.google.com/store/xhr/getdocGoogle Play 자체에서 제공합니다. 반환 된 결과를 사용하려면 약간의 조정이 필요합니다. 첫 번째 줄에있는 4 개의 문자를 처리 data =하기 전에 같은 것으로 대체하는 것과 같습니다 eval().)
Izzy

좋은 지적. 문서화되지 않은 API에 액세스하기 위해 사람들이 작성한 라이브러리에 대해 몰랐습니다. 내가 아는 한 Play 스토어는 일반적인 사용을 지원하지 않습니다.
Sparky

1
모르겠다. 나는 ( HerokuApp 과 이전 의견의 하나) 둘 다 시도했지만 문제는 없습니다. Heroku가 좋은 JSON을 제공하지만, 불행히도 총 투표 수가 그리워 - 다른 하나는 모두를 제공하면서,하지만 끔찍한 서식에 ...
이지

1
@Izzy 링크는 더 이상 작동하지 않습니다
데니스 Guse

@Dennis 내가 그것에 대해 할 수있는 일은 아무것도 없으며 대답이 삭제 된 것 같습니다. 그렇지 않더라도 그 앱은 영원히 사라졌고 그들의 도메인 (playstoreapi.com)도 지금 "판매용"입니다.
Izzy

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.