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

使用google_play_scraper爬取Play商店评论数量不符原因咨询

Google Play评论爬取数量不符问题

我使用google_play_scraper爬取应用com.canda.mobileapp的Play商店评论,Play商店显示该应用有1.6万条评论,但实际仅能爬取到4869条。我已经通过自定义函数尝试覆盖多国家与语言组合,代码如下:

# Import necessary libraries
import pandas as pd
import numpy as np
from google_play_scraper import app, Sort, reviews_all

# Define function to scrape reviews for a specific country and language combination
def scrape_reviews(country, lang):
    reviews = reviews_all(
        'com.canda.mobileapp',
        sleep_milliseconds=0,
        lang=lang,
        country=country,
        sort=Sort.NEWEST
    )
    reviews_df = pd.DataFrame(reviews)
    try:
        reviews_df = reviews_df[['reviewId', 'userName', 'userImage', 'content', 'score', 'thumbsUpCount', 'reviewCreatedVersion', 'at', 'replyContent', 'repliedAt']].assign(Country_name=df.loc[df['country'] == country, 'Country_name'].iloc[0], Language=lang)
    except KeyError:
        reviews_df = pd.DataFrame()
    return reviews_df

# Define dataframe containing country and language combinations
data = {'Country_name': ['Belgium', 'Belgium', 'Belgium', 'Belgium', 'Czechia', 'Czechia', 'Denmark', 'Denmark', 'Germany', 'Germany', 'Greece', 'Greece', 'Spain', 'Spain', 'France', 'France', 'Croatia', 'Croatia', 'Italy', 'Italy', 'Hungary', 'Hungary', 'Netherlands', 'Netherlands', 'Austria', 'Austria', 'Poland', 'Poland', 'Portugal', 'Portugal', 'Romania', 'Romania', 'Switzerland', 'Switzerland', 'Switzerland', 'Switzerland', 'Switzerland', 'Slovakia', 'Slovakia', 'Slovenia', 'Slovenia', 'Sweden', 'Sweden', 'Finland', 'Finland'],
        'country': ['BE', 'BE', 'BE', 'BE', 'CZ', 'CZ', 'DK', 'DK', 'DE', 'DE', 'GR', 'GR', 'ES', 'ES', 'FR', 'FR', 'HR', 'HR', 'IT', 'IT', 'HU', 'HU', 'NL', 'NL', 'AT', 'AT', 'PL', 'PL', 'PT', 'PT', 'RO', 'RO', 'CH', 'CH', 'CH', 'CH', 'CH', 'SK', 'SK', 'SI', 'SI', 'SE', 'SE', 'FI', 'FI'],
        'Language': ['Dutch', 'French', 'German', 'English', 'Czech', 'English', 'Danish', 'English', 'German', 'English', 'Greek', 'English', 'Spanish', 'English', 'French', 'English', 'Croatian', 'English', 'Italian', 'English', 'Hungarian', 'English', 'Dutch', 'English', 'German', 'English', 'Polish', 'English', 'Portuguese', 'English', 'Romanian', 'English', 'German', 'French', 'Italian', 'Romansh', 'English', 'Slovak', 'English', 'Slovenian', 'English', 'Swedish', 'English', 'Finnish', 'English'],
        'lang': ['nl', 'fr', 'de', 'en', 'cs', 'en', 'da', 'en', 'de', 'en', 'el', 'en', 'es', 'en', 'fr', 'en', 'hr', 'en', 'it', 'en', 'hu', 'en', 'nl', 'en', 'de', 'en', 'pl', 'en', 'pt', 'en', 'ro', 'en', 'de', 'fr', 'it', 'rm', 'en', 'sk', 'en', 'sl', 'en', 'sv', 'en', 'fi', 'en']
       }


df = pd.DataFrame(data)

reviews_dfs = df.apply(lambda row: scrape_reviews(row['country'], row['lang']), axis=1)
combined_reviews_df = pd.concat(reviews_dfs.to_list(), ignore_index=True)

#remove duplicates
combined_reviews_df = combined_reviews_df.groupby(['content', 'Language']).first().reset_index()
combined_reviews_df

可能的原因

  • Google Play非公开API限制:google_play_scraper依赖的是Google Play未公开的接口,这类接口本身存在数据返回上限,不会提供全量评论,即便切换不同地区语言请求,全局爬取量仍会被限制。
  • 评论区域隔离:Play商店的评论并非完全全局可见,部分评论仅在特定地区或语言版本下展示,当前的国家语言组合仅覆盖欧洲区域,遗漏了北美、亚太等其他地区的评论来源。
  • 去重逻辑误判:用content+Language分组去重,可能将不同用户发布的相同内容评论误判为重复项删除,或是同一条评论在不同地区被多次爬取后被合并,导致最终统计数量减少。
  • reviews_all实际爬取上限:reviews_all函数名称虽带“all”,但实际上无法获取真的全量评论——Google Play前端显示的评论数是全量统计,但第三方工具仅能通过分页接口拿到有限的历史数据,旧评论可能无法被爬取到。
  • 高频请求触发反爬:代码设置sleep_milliseconds=0,短时间内大量请求会触发Google的反爬策略,部分请求被拦截,返回的数据不完整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 07:07:07