如何查看Google Play商店中的所有评分?


8

有没有办法显示Play中的所有评分?

您会看到一些等级降序排列:

在此处输入图片说明

但是对于成千上万的评论来说,这不是那么可行,因为您只能以这种方式阅读5星级评分。

还有其他更好的方法来查看评分吗?

也许Greasemonkey有可能吗?

Answers:


4

同样,由于Google Play缺乏适当的过滤/排序选项而感到沮丧,并受到您关于使用Greasemonkey脚本可以解决问题的建议的启发,我决定编写一个,并上传到https://greasyfork.org/en/ scripts / 24667-google-play-review-rating-filter。它将五个复选框添加到play.google.com上的应用程序页面,使您可以筛选具有特定星级的评论。我已经使用Firefox中的GreasemonkeyUnified Script Injector和Chrome中的Tampermonkey对其进行了测试。

除了在此处重现整个脚本之外,我将描述为感兴趣的人所采用的方法。TL; DR:如果仅需要解决方案,请安装适当的浏览器加载项并从上面的链接下载用户脚本。请注意,如果您想在自己的Android设备上使用它,则可能需要将Firefox与USI插件一起使用(并从菜单中选择“请求桌面网站”),因为大多数其他Android浏览器均不支持add-或用户脚本以及Greasemonkey当前在Android的Firefox中无法使用-在Google Play应用中将无法使用。

当您浏览评论时,GP(Google Play)/store/getreviews使用HTTP POST方法通过AJAX请求向URL加载更多评论的数据。因此,通过挂接这些AJAX调用,可以修改返回给GP的数据。

XMLHttpRequest.prototype.open可以用将调用原始函数的函数代替,但是首先,如果请求是针对审阅数据的,则修改XHR(XMLHttpRequest)对象,以便POST可以捕获请求主体并修改响应。甲send属性可以被分配到XHR对象作为将所述存储的函数POST调用原始之前的数据。onreadystatechange可以将该属性分配为一个函数,该函数将在调用GP分配给该属性的函数之前修改响应。正如GP将onreadystatechange在此之后分配的那样,Object.defineProperty将需要使用它来重新定义属性,以便存储GP设置的值,而不是实际将其分配给内部属性。并且由于该responseText属性是只读的,Object.defineProperty因此需要更改其值。

GP返回的数据为JSON格式,尽管开头有一些垃圾字符,应该在所有修改后的数据中忠实地复制这些字符。

以下代码对此进行了演示,并将请求正文和响应数据输出到浏览器的开发者控制台窗口(尽管实际上并未对其进行修改):

XMLHttpRequest.prototype.open = (function(open) {
  return function(method, url) {
    if (
      method === 'POST' &&
      url &&
      url.replace(/^https?:\/\/play\.google\.com/, '').split('?', 1)[0] ===
        '/store/getreviews'
    ) {
      var requestBody;
      var orgSend = this.send;
      var orgOnReadyStateChange = this.onreadystatechange;
      this.send = function(data) {
        requestBody = data;
        return orgSend.apply(this, arguments);
      };
      this.onreadystatechange = function() {
        if (this.readyState === XMLHttpRequest.DONE && this.status === 200) {
          var responseText = this.responseText;
          var nJunkChars = responseText.indexOf('[');
          try {
            var jsonData = JSON.parse(
              nJunkChars ? responseText.substr(nJunkChars) : responseText
            );
            // TODO: modify jsonData here
            console.log('Request: %o\nResponse: %o', requestBody, jsonData);
            Object.defineProperty(this, 'responseText', {
              value: responseText.substr(0, nJunkChars) +
                JSON.stringify(jsonData),
              configurable: true,
              enumerable: true
            });
          } catch (e) {
            console && console.log && console.log(e);
          }
        }
        if (orgOnReadyStateChange) {
          return orgOnReadyStateChange.apply(this, arguments);
        }
      };
      Object.defineProperty(this, 'onreadystatechange', {
        get: function() { return orgOnReadyStateChange; },
        set: function(v) { orgOnReadyStateChange = v; },
        configurable: true,
        enumerable: true
      });
    }
    return open.apply(this, arguments);
  };
})(XMLHttpRequest.prototype.open);

GP返回的数据包括一个元素的数组,该元素是四个元素的数组,如下所示:

  • "ecr";
  • 1如果还有更多评论,2如果这是评论的最后一个“页面”,3则发生错误;
  • 包含评论“页面”(以及开发人员的任何回复)的HTML –当前每页返回40条评论;
  • 页号,与pageNumPOST请求正文中的参数相对应。

可以修改HTML,以删除星级(而不是感兴趣的星级)的评论(以及任何相关的开发人员回复)。评论与选择器匹配,div.single-review并具有div.current-rating与内联样式匹配的后代,其中CSS width属性是与评级相对应的百分比(20%用于1星,40%用于2星等)。开发人员的答复与选择者匹配,div.developer-reply并且是审核之后的兄弟姐妹。

在用户界面中添加复选框以允许选择要显示的评论星级,这非常简单。但是,当更改他们的选择时,需要重新获取评论。更改排序顺序会导致这种情况的发生,甚至选择与以前相同的排序顺序也是如此。因此,要自动实现此目的,每当更改复选框时,click都可以在当前选择的排序顺序元素上触发一个事件,该事件可以通过选择器进行查找.id-review-sort-filter .dropdown-child.selected。最初加载GP上的应用程序页面时,评论的第一页已经包含在内,并且不会通过AJAX加载,但是只要所有复选框都被初始选中,那都没有关系。

有时,一页(40)条评论中不会包含任何具有所需评分的评论。如果返回的HTML中没有元素,则GP将不再请求任何页面。因此,要满足此要求,有必要获取其他页面的评论(通过相同的AJAX API,但要修改pageNum参数),直到返回一些评论为止。对于后续页面,该pageNum参数需要进行翻译以解决此问题。

当选定的排序顺序为“评分”时,可能会有许多5星级评论的页面排在任何具有期望评分的页面上。重复获取和丢弃评论的页面和页面将效率低下(并且可能会触发Google的临时IP阻止)。在这种情况下,当reviewSortOrder参数为时1,可以使用二进制搜索来更快地找到要返回评论的下一页。span.reviews-num可以检查与选择器匹配的页面元素,以查找评论总数,从而确定页面上限。不过,目前看来,对页面111之后的页面的请求会收到HTTP 400响应。


非常有用的脚本;谢谢!
布罗克·亚当斯

1

这仅适用于Android和设备上的Google Play应用,但大多数Google Play不再适用于网络桌面。通过Google 查看您应用的评级和评论,您可以通过将应用导出到CSV文件来查看其评级和评论数据。

通过从开发者控制台导出评分和评论,您可以批量分析趋势,以更好地了解您的用户反馈。每天生成报告,将其存储在每月CSV文件中,并存储在Google Cloud Storage存储桶中。

有一个小节标题,审阅数据的文件格式

Field                 Format                    Optional    Example
Package Name          String                        NO      com.company.app
App Version Code      int32                         YES 
Star Rating           int32 (between 1 and 5)       NO  
Review Title    
Review Text String
Review Link String                                  NO      https://play.google.com/apps/publish/?dev_acc=<...>#ReviewPlace:id=<..>

也可以尝试此操作,查看单个应用程序统计信息,评级。


-1

我为此推荐App Annie。他们让您免费监控自己的应用程序,并付费获取竞争对手应用程序的信息。

特别是对于评论,他们有一个简单易用的“下载CSV”按钮。他们甚至拥有历史数据,因此,如果您今天注册,您应该可以立即访问以前的评论。


这读起来很像广告。如果您是该产品的会员,请在答案中予以披露,并重新制定其格式,以回答其如何适合OP尝试执行的实际任务。
jonsca
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.