如果没有API,如何获取Android Market数据?

时间:2009-08-20 19:33:10

标签: java android

据我所知,没有API(官方或非官方)访问Android Market上的应用程序信息(标题,图标,说明,下载,评论等信息)。但是,有一些websites已设法编译此信息。

我的问题是:这是怎么做到的?

几个猜测。

  • 手动(不太可能,由于音量)
  • 实施官方应用程序使用的协议(通过反编译或观察数据包)
  • 使用官方应用程序运行某种调试程序以提取实时数据
  • 使用某种自动化+屏幕截图+文本识别(看起来很复杂)
  • 修改(打开)源以写入日志文件

我只是好奇这是怎么做的,因为我肯定无法理解。谢谢。

6 个答案:

答案 0 :(得分:32)

Google代码上有一个Java项目试图为市场构建一个开源API:http://code.google.com/p/android-market-api/

还有一些JRuby绑定:http://github.com/jberkel/supermarket

但是,它们都需要Google / Market帐户,并且API仅部分实施(目前正在搜索,评论和图片)。此外,重建的协议缓冲区描述符(market.proto)可用于为Java以外的语言生成绑定。

答案 1 :(得分:7)

捕获数据的另一个选择是使用一些自定义图像(如Cyanogenmod和其他)附带的 tcpdump 工具。您可以捕获所有数据包,然后使用Wireshark对其进行分析。这条路线比劫持wifi更容易。

查看这些精彩帖子以清除一些内容:

更新我一直在努力解决这个问题,而@gsmd是正确的,他们使用Protocol Buffers来传输信息,使用上述技术可以捕获数据包。然后你需要深入研究protobuffers来理解这些信息。

答案 2 :(得分:5)

据我所知,他们正在使用Protocol Buffers。在访问通过wifi连接的市场时,你必须嗅到手机流量。

答案 3 :(得分:0)

从开发者控制台获取数据有一种非常好的方法。看看:https://github.com/tmurakam/googleplay_dev_scraper

我在树莓派上运行它并且效果非常好。安装起来非常简单,并使用bash脚本进一步自动化。我真的向有兴趣从开发者控制台获取数据的人推荐这个刮刀!

答案 4 :(得分:0)

谷歌最近增加了对此的官方支持。报告将导出到Google云端存储分区

有关详细信息,请参阅https://support.google.com/googleplay/android-developer/answer/6135870?hl=en&ref_topic=3450942

答案 5 :(得分:0)

不幸的是,Google Play商店(以前称为Android电子市场)仍然没有官方API来访问Android应用的元数据(或任何其他统计信息)。

如其他答案中所述,您可以开发自己的网络抓取工具,解析HTML网页并提取您需要的应​​用元数据(例如标题,说明,价格等)。此主题已在此其他question中介绍。

另一个选择是使用基于ProtoBuf的开源库来获取有关应用程序的元数据,这里是项目的链接:https://code.google.com/archive/p/android-market-api。 此库代表有效的Google帐户从Google Play获取应用元数据,但您仍需要使用抓取工具“查找”可用的应用并安排其元数据检索。这个其他开源项目可以帮助您:https://code.google.com/archive/p/android-marketplace-crawler

如果您不想自己实现所有这些,则可以使用第三方服务通过基于JSON的API 访问Android应用元数据。例如,42matters.com(我工作的公司)为Android和iOS提供API以检索应用的元数据,详情请参阅:

https://42matters.com/app-market-data

要获取应用的标题,图标,说明,下载,您可以使用此处记录的“查找”端点:

https://42matters.com/docs/app-market-data/android/apps/lookup

这是“愤怒的小鸟太空高级版”应用程序的JSON响应示例:

{
    "package_name": "com.rovio.angrybirdsspace.premium",
    "title": "Angry Birds Space Premium",
    "description": "Play over 300 interstellar levels across 10 planets...",
    "short_desc": "The #1 mobile game of all time blasts off into space!",
    "rating": 4.3046236038208,
    "category": "Arcade",
    "cat_key": "GAME_ARCADE",
    "cat_keys": [
        "GAME_ARCADE",
        "GAME",
        "FAMILY_EDUCATION",
        "FAMILY"
    ],
    "price": "$1.15",
    "downloads": "1,000,000 - 5,000,000",
    "version": "2.2.1",
    "content_rating": "Everyone",
    "promo_video": "https://www.youtube.com/embed/g6AL9YqRHaI?ps=play&vq=large&rel=0&autohide=1&showinfo=0&autoplay=1",
    "market_update": "2015-07-03T00:00:00+00:00",
    "screenshots": [
        "https://lh3.googleusercontent.com/ZmuBQzIy1G74coPrQ1R7fCeKdJmjTdpJhNrIHBOaFyM0N2EYdUPwZaQjnQUtiUDGmac=h310",
        "https://lh3.googleusercontent.com/Xg2Aq70ZH0SnNhtSKH7xg9jCfisWgmmq3C7xQbx6YMhTVAIRqlRJeH8GYtjxapb_qR4=h310",
        "https://lh3.googleusercontent.com/T4o5-2_UP82sj4fSSegbjrGmslNHlfvtEYuZacXMSOC55-7eyiKySw05lNF1QQGO2FeU=h310",
        "https://lh3.googleusercontent.com/f2ennaLdivFu5cQQaVPKsRcWxB8FS5T4Bkoy3l0iPW9-GDDnTVRhvR5kz6l4m8FL1c8=h310",
        "https://lh3.googleusercontent.com/H-9M03_-O9Df1nHr2-rUdjtk2aeBY3bAxnqSX3m2zh_aV8-K1t0qU1DxLXnK0GrDAw=h310"
    ],
    "created": "2012-03-22T08:24:00+00:00",
    "developer": "Rovio Entertainment Ltd.",
    "number_ratings": 20812,
    "price_currency": "$",
    "icon": "https://lh3.ggpht.com/aQaIEGrmba1ENSEgUtArdm3yhJUug7BRWlu_WaspoJusZyHv1rjlWtYqe_qRjE_Kmh1E=w300",
    "icon_72": "https://lh3.ggpht.com/aQaIEGrmba1ENSEgUtArdm3yhJUug7BRWlu_WaspoJusZyHv1rjlWtYqe_qRjE_Kmh1E=w72",
    "market_url": "https://play.google.com/store/apps/details?id=com.rovio.angrybirdsspace.premium&referrer=utm_source%3D42matters.com%26utm_medium%3Dapi"
}

或者,我们还有 DATA FEED DUMP 一次访问所有移动应用数据:https://42matters.com/docs/app-market-data/file-dump/android-app-details(在此页面上,您还可以找到免费的测试数据样本)

我希望这会有所帮助,否则请随时与我联系。我非常了解这个话题,可以指出你正确的方向。

此致

安德烈