84

我见过一些使用来自 Android Play 商店的数据的应用程序和网站。例如应用程序或具有顶级应用程序排名的网站等。但是您如何获取数据?从哪里可以解析它?

4

5 回答 5

47

Android Market有一个非官方的开源 API,您可以尝试使用它来获取所需的信息。希望这可以帮助。

于 2012-04-23T00:00:11.273 回答
22

免责声明:我来自 42matters,他们已经在https://42matters.com/api上提供了这些数据,请随时查看或给我们留言。

正如 lenik 提到的,有一些开源库已经帮助从 GPlay 获取一些数据。如果您想自己构建一个,您可以尝试解析 Google Play App 页面,但您应该注意以下几点:

  • 确保您尝试解析的 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)花费很多钱 - 如果一个应用程序是 100k,则每天传输 220gb 数据悲观
  • 您如何发现新应用
  • 您如何获得每个国家/地区的定价,每种语言的翻译

名单还在继续。如果你不想自己做这一切,你可以考虑42matters API,它支持查找和搜索、谷歌排行榜、高级查询和过滤器。这适用于 35 种语言和 50 多个国家/地区。

[2]:

于 2014-02-28T09:28:40.320 回答
22

我编写了一个小的 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 } ]
于 2015-04-07T23:12:22.457 回答
5

Google Play 商店不提供这些数据,所以网站肯定只是在抓取它。

于 2012-04-22T21:21:09.563 回答
0

这是一个 google chrome 扩展程序,可让您下载您的评论:https ://chrome.google.com/webstore/detail/my-play-store-reviews/ldggikfajgoedghjnflfafiiheagngoa?hl=en

于 2014-01-12T08:21:58.677 回答