按页面从(法语)维基百科获取总页面视图

Getting total page view from (french) Wikipedia by page

我正在搜索法语维基百科项目任何页面的总浏览量(从 2015 年 7 月,PageViews 发布日期 API,到 2019 年 1 月 1 日)。

使用 PageViews API (How to use Wikipedia API to get the page view statistics of a particular page in wikipedia?) 对我来说似乎太重了:我需要超过 200 万页的数据。

使用 MassViews (https://tools.wmflabs.org/massviews/) with a query returning all pages titles (https://quarry.wmflabs.org/query/34473) 也不起作用:MassView 有 20000 页的限制,无法从我的查询结果中检索某些页面标题的数据。

你知道一些更有效的工具吗?

您可以从此处下载所有综合浏览量的转储:https://dumps.wikimedia.org/other/pageviews/

找到这个:https://dumps.wikimedia.org/other/pagecounts-ez/merged/ which is a merged of page views dumps. Documented here : https://wikitech.wikimedia.org/wiki/Analytics/Data_Lake/Traffic/Pageviews

这里是一个 Python 脚本的例子,它简单地打印文件的每一行。

import csv
import bz2
from pprint import pprint

with bz2.open("pagecounts-2011-12-views-ge-5-totals.bz2", "rt", errors = "replace") as fichier:
    for line in fichier:
        text = line.split()
        if(text[0] == "fr"):
            pprint(text)

有了这种文件,每月一个,设置这种工作流程变得很容易:过滤我真正想要的留置权(法语维基),将数据导入 MySQL 数据库,然后查询再次使用 Python。

维基百科的API功能强大,像this可以得到法语维基百科Apollo_10的浏览量。以此为基础制作脚本并不难

如果您觉得使用API查询所有站点很繁重,您可以使用google bigquery。它的开放数据集中有网页浏览数据。关于这个有tutorial

这是我的例子:

  1. 访问 bigqery 的控制台。
  2. 在答案中输入以下内容。
select * from `bigquery-public-data.wikipedia.pageviews_2015` where datehour = '2015-07-12 18:00:00 UTC';
  1. 你会得到一个table,里面包含了此时所有的浏览量数据。

如果您想获取法语wiki的特定页面,您可以指定'wiki=fr'和'title = xxx'。由于我是 bigquery 的新手,我不知道如何跨 table 查询数据并导出。但基于我对 SQL 的了解,这是可能的。您可以按标题汇总数据并导出结果。

唯一的问题是 bigquery 不是免费的。例如,上面的查询花费 6GB。查询 (on-demand) 前 1 TB 免费,之后每 TB 5 美元。 Bigquery 将根据您 select 列中处理的数据收费,即使您使用 'limit'。所以可能要花很多钱。