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

Python爬取Google Play应用评论返回空列表,请求错误排查

解决Google Play评论爬取返回空列表的问题

问题根源分析

你的代码返回空列表主要有三个核心原因:

  • 动态加载限制:Google Play的评论内容通过JavaScript动态渲染,requests.get()仅能获取初始HTML骨架,无法拿到实际加载的评论数据。
  • DOM结构变更:代码中依赖的single-review、review-body等CSS类名,当前Google Play页面结构已更新,这些类名不再存在。
  • 反爬拦截:直接用requests发起请求易被Google反爬机制识别,返回内容可能被限制或缺失。

解决方案

方案1:使用Selenium动态渲染页面

通过模拟浏览器访问,等待页面加载完成后提取评论,解决动态加载问题:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

# 初始化Chrome浏览器(需提前下载对应版本的chromedriver)
driver = webdriver.Chrome()
target_url = 'https://play.google.com/store/apps/details?id=com.example.app&reviewSortOrder=4&reviewType=0'
driver.get(target_url)

# 滚动页面加载更多评论(可根据需求调整滚动次数)
for _ in range(3):
    driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')
    time.sleep(2)  # 等待评论加载

# 等待评论元素加载完成
wait = WebDriverWait(driver, 10)
review_containers = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, 'div.RHo1pe')))

reviews_list = []
for container in review_containers:
    # 提取评论者名称
    reviewer_name = container.find_element(By.CSS_SELECTOR, 'div.X5PpBb').text
    # 提取评分
    rating_label = container.find_element(By.CSS_SELECTOR, 'div.iXRFPc').get_attribute('aria-label')
    review_rating = rating_label.split(' ')[1]
    # 处理展开更多评论的情况
    try:
        expand_btn = container.find_element(By.CSS_SELECTOR, 'button.VfPpkd-Bz112c-LgbsSe.yHy1rc.eT1oJ.mN1ivc')
        expand_btn.click()
        time.sleep(0.5)
    except:
        pass
    # 提取评论内容
    review_text = container.find_element(By.CSS_SELECTOR, 'div.h3YV2d').text
    
    reviews_list.append({
        'reviewer_name': reviewer_name,
        'review_rating': review_rating,
        'review_text': review_text
    })

driver.quit()
print(reviews_list)

注意事项:

  • 需下载与浏览器版本匹配的驱动(如Chrome的chromedriver),确保路径配置正确。
  • 可调整滚动次数和等待时间,加载更多历史评论。

方案2:使用Google Play Developer API(推荐)

作为应用开发者,官方API是获取评论最稳定、合法的方式,无需处理页面结构变化和反爬问题:

from google.oauth2 import service_account
from googleapiclient.discovery import build

# 替换为你的服务账号密钥文件路径
SERVICE_ACCOUNT_JSON = 'your-service-account-key.json'
APP_PACKAGE = 'com.example.app'

# 初始化API客户端
credentials = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_JSON,
    scopes=['https://www.googleapis.com/auth/playstore']
)

android_publisher = build('androidpublisher', 'v3', credentials=credentials)

# 分页获取所有评论
reviews_list = []
request = android_publisher.reviews().list(packageName=APP_PACKAGE)
while request is not None:
    response = request.execute()
    for review in response.get('reviews', []):
        # 提取评论核心信息
        comment_content = review.get('comments', [{}])[0].get('userComment', {})
        reviews_list.append({
            'reviewer_name': review['authorName'],
            'review_rating': review['starRating'],
            'review_text': comment_content.get('text', '')
        })
    # 获取下一页评论
    request = android_publisher.reviews().list_next(request, response)

print(reviews_list)

前置步骤:

  1. 登录Google Cloud Console创建项目,启用「Google Play Developer API」。
  2. 配置服务账号权限,关联到你的Google Play开发者账号,下载密钥JSON文件。

内容的提问来源于stack exchange,提问作者Tushar Patki

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:55:42