【问题标题】:How to use Wikipedia API to get the page view statistics of a particular page in wikipedia?如何使用 Wikipedia API 获取 wikipedia 中特定页面的浏览量统计信息?
【发布时间】:2011-03-16 09:56:55
【问题描述】:

stats.grok.se 工具提供维基百科中特定页面的浏览量统计信息。有没有一种方法可以使用 wikipedia api 来获取相同的信息?页面浏览量计数器属性的实际含义是什么?

【问题讨论】:

    标签: wikipedia-api


    【解决方案1】:

    Pageview API 前几天发布:https://wikimedia.org/api/rest_v1/metrics/pageviews/per-article/{project}/{access}/{agent}/{article}/{granularity}/{start}/{end}

    例如https://wikimedia.org/api/rest_v1/metrics/pageviews/per-article/en.wikipedia/all-access/all-agents/Foo/daily/20151010/20151012会给你

    {
      "items": [
        {
          "project": "en.wikipedia",
          "article": "Foo",
          "granularity": "daily",
          "timestamp": "2015101000",
          "access": "all-access",
          "agent": "all-agents",
          "views": 79
        },
        {
          "project": "en.wikipedia",
          "article": "Foo",
          "granularity": "daily",
          "timestamp": "2015101100",
          "access": "all-access",
          "agent": "all-agents",
          "views": 81
        }
      ]
    }
    

    【讨论】:

    【解决方案2】:

    不,没有。

    prop=info 返回的counter 属性将告诉您从服务器查看页面的次数。它在 Wikipedia 和其他 Wikimedia wiki 上被禁用,因为激进的 squid/varnish 缓存意味着只有一小部分页面视图会到达实际服务器以影响该计数器,即使这样,更新该计数器的数据库写入负载也会增加可能会令人望而却步。

    stats.grok.se 工具使用来自缓存服务器的匿名日志来计算页面浏览量;原始日志文件可从http://dammit.lt/wikistats 获得。如果您需要 API 来访问 stats.grok.se 中的数据,您应该联系the operator of stats.grok.se 请求创建一个。


    请注意,这是 4 年前编写的,此后创建了一个 API(请参阅 this answer)。不过,目前还没有一种方法可以通过 api.php 访问它。

    【讨论】:

    • 不过很快就会有。可以在维基百科的问题跟踪器T44259 下跟踪进度。
    【解决方案3】:

    像这样获取过去 30 天的每日 JSON

    http://stats.grok.se/json/en/latest30/Britney_Spears

    【讨论】:

      【解决方案4】:

      您可以查看统计信息here。 有没有人体验过一些 API 来获取 Pageview Stats? 此外,我还查看了可用的Raw Data,但找不到提取浏览量的解决方案。

      【讨论】:

        【解决方案5】:

        似乎没有任何 API;但是,您可以向 stats.grok.se 发出 HTTP 请求并解析 HTML 或 JSON 结果以提取页面查看次数。

        我创建了一个网站http://wikipediaviews.org,它正是这样做的,以便更轻松地比较多个月和年的多个页面。为了加快速度并尽量减少对 stats.grok.se 的请求数量,我将所有过去的查询结果都存储在本地。

        我使用的代码可以在http://github.com/vipulnaik/wikipediaviews获得。

        带有实际检索码的文件在https://github.com/vipulnaik/wikipediaviews/blob/master/backend/pageviewqueries.inc

        function getpageviewsonline($page, $month, $language)
        {
          $url = getpageviewsurl($page,$month,$language);
          $html = file_get_contents($url);
          preg_match('/(?<=\bhas been viewed)\s+\K[^\s]+/',$html,$numberofpageviews);
          return $numberofpageviews[0];
        }
        

        getpageviewsurl 的代码在https://github.com/vipulnaik/wikipediaviews/blob/master/backend/stringfunctions.inc:

        function getpageviewsurl($page,$month,$language)
        {
          $page = str_replace(" ","_",$page);
          $page = str_replace("'","%27",$page);
          return "http://stats.grok.se/" . $language . "/" . $month . "/" . $page;
        }
        

        PS:如果 wikipediaviews.org 的链接不起作用,那是因为我最近注册了该域。在此期间尝试http://wikipediaviews.subwiki.org

        【讨论】:

          【解决方案6】:

          em.. 这个问题是 6 年前提出的。以前官网没有这样的API。

          它改变了。

          一个简单的例子:

          https://en.wikipedia.org/w/api.php?action=query&amp;format=json&amp;prop=pageviews&amp;titles=Buckingham+Palace%7CBank+of+England%7CBritish+Museum

          查看文档:

          prop=pageviews

          显示每页浏览量数据(过去 pvipdays 天每一天的每日浏览量)。结果格式为页面标题(带下划线)=> 日期(Ymd)=> 计数。

          【讨论】:

            猜你喜欢
            • 2016-11-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-11-03
            • 1970-01-01
            • 1970-01-01
            • 2021-08-31
            • 2016-07-12
            相关资源
            最近更新 更多