搜索Google Play商店

11

我想爬取Google Play商店以下载所有Android应用程序的网页(所有基本URL为https://play.google.com/store/apps/的网页)。我查看了Play商店的robots.txt文件,它禁止爬取这些URL。

此外,在浏览Google Play商店时,每个类别中只能看到前3页的热门应用程序。如何获取其他应用程序页面?

如果有人尝试过爬取Google Play,请告诉我以下几点: a)您是否成功爬取了Play商店。如果是,请让我知道您是如何做到的。 b)如何爬行不在每个类别的热门应用程序中可见的隐藏应用程序页面? c)是否有技术可以下载应用程序而不仅仅是网页?

我已经搜索并找到了以下链接:

a) https://code.google.com/p/android-market-api/ 
b) https://code.google.com/p/android-marketplace-crawler/source/checkout 
c) http://mohsin-junaid.blogspot.co.uk/2012/12/how-to-install-android-marketplace.html 
d) http://mohsin-junaid.blogspot.in/2012/12/how-to-download-multiple-android-apks.html

谢谢!

3个回答

7
首先,Google Play的robots.txt不禁止具有“/store/apps”基础的页面。
如果您想爬取Google Play,您需要开发自己的网络爬虫,解析HTML页面并提取所需的应用程序元数据(例如标题、描述、价格等)。这个问题已经在这个question中涉及。有一些库可以帮助处理,例如:
Java:https://jsoup.org Python:https://scrapy.org 较难的部分是“找到”要爬取的应用程序页面。您可以使用1)Google Play Sitemap或2)按照Link Extractor文档中所述,在爬取的每个页面中跟踪发现的应用链接(如果您计划使用Scrapy)。另一个选择是使用基于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(我所在的公司)提供了一个API,用于检索应用程序的元数据,包括Android和iOS,下面是更多详细信息:

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"
}

我希望这可以帮助到您,如果有需要请随时联系我。我对这个主题非常了解,可以指引您走向正确的方向。
敬礼,
安德烈

我在42matter中找不到可以用来检索所有应用程序的API。假设我想解析所有Google Play应用程序的电子邮件,这些应用程序安装量超过10,000但不到500万。42matter只提供按包或搜索词检索应用程序的API。 - user12384512
通过使用高级查询API https://42matters.com/docs/app-market-data/android/apps/advanced-query-api,您可以通过设置downloads_gte和downloads_lte来精确检索所需内容。希望这能帮到您 :) - agirardello
1
这些站点地图似乎仅限于Google Play Books页面。你知道有关应用程序的站点地图吗? - spiffytech
@spiffytech,你找到应用程序的站点地图了吗? - Rupesh D.C

2

2

我之前已经用Python做过这项工作,你需要的是一个名为Selenium的Web自动化测试库,它可以执行JavaScript代码并将结果返回给Python。使用JavaScript,您可以通过程序本身点击“显示更多”按钮。当您获取单个类别页面的所有链接时,您可以获取应用程序的一些信息。简单的演示在这里。希望有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接