使用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
相关产品推荐
相关产品推荐

