You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何高效爬取Google Play商店所有应用的全量评论?

如何高效爬取Google Play应用的全量评论?

嘿,我来帮你解决这个问题!你之前用urllib+BeautifulSoup直接爬静态页面的方式行不通,因为Google Play的评论是动态加载的——点击“下一页”时,页面通过AJAX请求拉取新数据,初始HTML里只有第一页的内容。下面给你几个高效的解决方案,按推荐程度排序:

1. 优先使用Google Play官方API(最合规高效)

Google提供了官方的Google Play Developer API,其中的Reviews模块可以直接获取全量评论,完全不用处理动态加载和反爬问题,这是最推荐的方式。

  • 步骤:
    • 前往Google Cloud Console创建项目,启用Google Play Developer API,获取API密钥或OAuth 2.0凭据。
    • 调用reviews.list接口,指定应用包名就能分页获取所有评论,还能按评分、语言过滤。
  • 示例代码(用google-api-python-client库):
    from googleapiclient.discovery import build
    
    # 替换成你的API密钥
    API_KEY = "YOUR_API_KEY"
    package_name = "com.google.android.youtube.tv"
    
    # 初始化API服务
    service = build('androidpublisher', 'v3', developerKey=API_KEY)
    request = service.reviews().list(packageName=package_name)
    
    all_reviews = []
    # 循环获取所有分页的评论
    while request is not None:
        response = request.execute()
        all_reviews.extend(response.get('reviews', []))
        request = service.reviews().list_next(request, response)
    
    # 处理并打印评论
    for review in all_reviews:
        print(f"作者:{review['authorName']}\n评论:{review['content']}\n---")
    
  • 优点:合法合规、数据准确、无需处理反爬,效率拉满。

2. 模拟动态AJAX请求(适合不想用API的场景)

如果不想走官方API,你可以模拟浏览器点击“下一页”时的AJAX请求:

  • 先打开浏览器开发者工具(F12),点击“下一页”,观察Network面板的XHR请求,会发现Google Play向https://play.google.com/store/getreviews发送POST请求加载更多评论,需要携带应用ID、语言、分页编号等参数。
  • 注意要设置真实的请求头(比如User-Agent),避免被反爬拦截,必要时可以加延迟或用代理。
  • 示例代码(用requests+BeautifulSoup):
    import requests
    from bs4 import BeautifulSoup
    import json
    
    package_name = "com.google.android.youtube.tv"
    base_url = "https://play.google.com/store/getreviews"
    # 替换成你的浏览器User-Agent
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
        "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8"
    }
    params = {
        "id": package_name,
        "hl": "en",
        "reviewSortOrder": "0",
        "pageNum": "0"
    }
    
    all_reviews = []
    while True:
        response = requests.post(base_url, headers=headers, data=params)
        # Google返回的内容被JS包裹,需要提取JSON部分
        raw_data = response.text.split(")]}'")[1]
        data = json.loads(raw_data)
        reviews_html = data[0][2]
        soup = BeautifulSoup(reviews_html, 'html.parser')
        review_items = soup.find_all('div', class_='RHo1pe')
    
        if not review_items:
            break  # 没有更多评论了
    
        for item in review_items:
            author = item.find('div', class_='X5PpBb').text
            content = item.find('div', class_='h3YV2d').text
            all_reviews.append({"作者": author, "评论": content})
    
        # 更新分页编号,获取下一页
        params["pageNum"] = str(int(params["pageNum"]) + 1)
    
  • 注意:这种方法可能会被Google的反爬机制拦截,需要随时调整请求参数,而且违反Google服务条款的风险更高。

3. 使用第三方封装库(简化开发)

有一些第三方库已经封装了Google Play评论的爬取逻辑,比如google-play-scraper,不用自己写请求和解析代码:

  • 先安装库:pip install google-play-scraper
  • 示例代码:
    from google_play_scraper import reviews, Sort
    
    package_name = "com.google.android.youtube.tv"
    
    # 先获取第一波评论和续页令牌
    all_reviews, continuation_token = reviews(
        package_name,
        lang='en',
        country='us',
        sort=Sort.NEWEST,
        count=100  # 每次获取的评论数量
    )
    
    # 循环获取剩余评论
    while continuation_token:
        batch, continuation_token = reviews(
            package_name,
            lang='en',
            country='us',
            sort=Sort.NEWEST,
            count=100,
            continuation_token=continuation_token
        )
        all_reviews.extend(batch)
    
    # 处理评论
    for review in all_reviews:
        print(f"作者:{review['userName']}\n评论:{review['content']}\n---")
    
  • 优点:开发速度快,不用关心底层实现;缺点:第三方库可能维护不及时,同样有触发反爬的风险。

最后提醒

  • 遵守Google Play的服务条款,不要过度频繁爬取,避免IP被封禁。
  • 商业用途优先选择官方API,避免法律风险。
  • 动态爬取时,尽量模拟真实用户行为,比如添加随机延迟、切换User-Agent、使用代理池。

内容的提问来源于stack exchange,提问作者Hello lad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:53:06