从Android Play商店获取数据


83

我已经看到一些使用Android Play商店数据的应用程序和网站。例如,应用程序或具有最高应用程序排名的网站等。但是,如何获取数据?从哪里可以解析呢?


OpenData网站上有开放式问答集:此处此处此处
philshem 2015年

@Umair不用了,谢谢。这个问题已有5年以上的历史了。
艾哈迈德(Ahmad)

Answers:


47

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


我假设您以前使用过此API。你能帮我解决一个问题吗?这是我关于API的问题: stackoverflow.com/questions/10281232/...
艾哈迈德

@lenik如何在C#中使用此APi?
Elad Benda

嗨,您是否可以使用上面的API获得所需的信息?我也在寻找一种参考音乐的方式...
vinnybad

这是特定于android的,因为手头的大多数用法都与网络有关,例如PHP;它可以刮掉使用PHP的仅仅是设备ID和一个屏幕快照,没有什么比其它API ..
Hunain乌斯曼

如何使用此API使用php从Google Play获取游戏详细信息。我不知道怎么开始?这是我的问题。请回答我... stackoverflow.com/questions/23622898/...

21

免责声明:我来自42matters,他已经在https://42matters.com/api上提供了此数据,您可以随时检查一下或给我们留言。

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

  • 确保您要解析的网址未在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万,则每天悲观的220 GB数据传输
  • 您如何发现新应用
  • 您如何在每个国家/地区获得定价,每种语言的翻译

清单继续。如果您不想自己做所有这些事情,可以考虑使用42matters API,它支持查找和搜索,热门Google图表,高级查询和过滤器。这适用于35种语言和50多个国家/地区。

[2]:


您好Ivan,欢迎来到stackoverflow。谢谢你的回答。对于将来的答案,请尝试提供尽可能多的信息和详细信息。如果您有一些代码样本或指向教程/文档的链接,请共享它们。对于这个问题,实际上不可能添加太多信息,因此这个答案是可以的。这只是对您将来在SO上进行活动的建议。感谢您
Springrbua

2
42matters API当前不支持获取用户评论(否则非常不错)。希望这样可以避免有人创建然后放弃帐户。
2014年

Google Market API是获取Google Play Market信息的最佳工具,但并非商业上免费的:p
Hunain Usman 2014年

71
这项服务非常昂贵
mate64 2015年

您如何获取api的“用户也喜欢”数据?与Google合作?是因为无法通过爬行市场来实现这一目标……
玛丽安·克鲁斯派(MarianKlühspies),2015年

20

我已经编写了一个小的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 } ]

19
我想是的,这些都是公开可用的数据。谷歌说“嘿,你不爬我的网站”会很有趣。
法卡多·奥拉诺

如何用PHP将此实现到网站中?
ama rullz amarullzz '16

这是一个Node.js包。您可以构建一个简单的节点应用程序以将其转储到数据库,也可以将其与browserify捆绑在一起以从浏览器运行它。如果要将其公开为RESTful API,也可以使用我编写的该包装
Facundo Olano

1
谢谢,我一直在寻找这样的工具。我实际上想获得第三方应用程序的评论,该应用程序没有我的Play开发者控制台访问权限,而Google API要求获得访问令牌。我很想知道节点模块的基础架构,它如何从Play商店获取评论?
Prateek Jain

1
我还在github github.com/s101d1/CSPlayStoreScraper上找到了一个有前途的项目。
smedasn

5

Google Play商店不提供此数据,因此这些网站必须只是在抓取它们。


2
不是(更长吗?)100%是,请参见使用PHP格式化JSON数据以获取XHR接口的示例,该示例https://play.google.com/store/xhr/getdoc显然由Google Play本身提供。返回的结果需要进行一些调整才能使用(某些喜欢的东西在第一线更换4个字符就像data =做一个之前eval()在他们身上)。
Izzy 2014年

好点子。我不了解人们为访问未记录的API而编写的库。据我所知,Play商店不支持将其用于一般用途。
Sparky

1
不知道 我都尝试过(HerokuApp和我以前的评论中的一个),没有问题。Heroku提供了不错的JSON,但不幸的是错过了总投票数-而另一个却提供了全部选票,但是格式很糟糕……
Izzy 2014年

1
@Izzy Link不再工作
丹尼斯

@Dennis我对此无能为力,似乎答案已删除。即使不是,该应用程序也一去不复返了,甚至他们的域名(playstoreapi.com)现在都在“出售”中。
伊兹(Izzy)'18年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.