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

使用google-play-scraper无法抓取全部Google Play应用评论求助

问题分析与解决方案

核心差异确认

首先你已经注意到:Google Play官网显示的总数包含无文字的纯评分,而google-play-scraper默认只抓取带文字内容的评论,这是数量差异的主要来源之一。但除此之外,还有以下关键原因导致抓取量不足:

其他导致数量差异的原因

  • Google Play的抓取限制:Google对公开评论接口的单次请求返回量、短时间内请求频率都有阈值限制,不会一次性返回所有带文字评论,哪怕设置了区域和语言参数也无法绕过。
  • 分页未完整遍历:默认调用reviews方法时,count参数默认值较小(通常为100),且不会自动遍历所有分页。仅调用一次只能获取第一页评论。
  • 区域数据误差:部分评论的区域标记可能不准确,或是Google Play的区域数据存在更新延迟,导致scraper无法获取到所有德国区的带文字评论。

解决方法

1. 循环分页抓取所有带文字评论

使用continuationToken参数遍历所有分页,直到没有更多数据返回。示例代码(Node.js环境):

const gplay = require('google-play-scraper');

async function fetchAllReviews(appId) {
  let allReviews = [];
  let nextToken = null;
  do {
    const response = await gplay.reviews({
      appId: appId,
      lang: 'de',
      country: 'de',
      sort: gplay.sort.NEWEST,
      count: 200, // 设置单次请求最大返回量
      continuationToken: nextToken
    });
    allReviews = [...allReviews, ...response.data];
    nextToken = response.continuationToken;
    // 添加随机延迟避免触发反爬
    await new Promise(resolve => setTimeout(resolve, Math.random() * 1000 + 500));
  } while (nextToken);
  return allReviews;
}

// 调用示例
fetchAllReviews('de.flaschenpost.app')
  .then(reviews => console.log(`最终抓取到带文字评论数:${reviews.length}`))
  .catch(err => console.error(err));

2. 验证官网实际带文字评论数

打开Google Play官网对应应用的评论区,切换到「所有评论」,查看页面标注的带文字评论数(通常显示为“X条带文字的评论”),和最终抓取数量对比:

  • 若两者接近,剩余差异就是无文字纯评分,属于正常情况;
  • 若仍有较大差距,说明触发了反爬限制,需调整请求频率或模拟真实设备请求。

3. 优化请求规避反爬

  • 添加随机延迟(如上例中的setTimeout),避免短时间高频请求;
  • 配置userAgent参数模拟移动设备请求头,比如:
    gplay.reviews({
      // 其他参数...
      userAgent: 'Mozilla/5.0 (Linux; Android 13; SM-G998B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36'
    })
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 02:15:34