按页面从(法语)维基百科获取总页面视图
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。
这是我的例子:
- 访问 bigqery 的控制台。
- 在答案中输入以下内容。
select * from `bigquery-public-data.wikipedia.pageviews_2015` where datehour = '2015-07-12 18:00:00 UTC';
- 你会得到一个table,里面包含了此时所有的浏览量数据。
如果您想获取法语wiki的特定页面,您可以指定'wiki=fr'和'title = xxx'。由于我是 bigquery 的新手,我不知道如何跨 table 查询数据并导出。但基于我对 SQL 的了解,这是可能的。您可以按标题汇总数据并导出结果。
唯一的问题是 bigquery 不是免费的。例如,上面的查询花费 6GB。查询 (on-demand) 前 1 TB 免费,之后每 TB 5 美元。 Bigquery 将根据您 select 列中处理的数据收费,即使您使用 'limit'。所以可能要花很多钱。
我正在搜索法语维基百科项目任何页面的总浏览量(从 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。
这是我的例子:
- 访问 bigqery 的控制台。
- 在答案中输入以下内容。
select * from `bigquery-public-data.wikipedia.pageviews_2015` where datehour = '2015-07-12 18:00:00 UTC';
- 你会得到一个table,里面包含了此时所有的浏览量数据。
如果您想获取法语wiki的特定页面,您可以指定'wiki=fr'和'title = xxx'。由于我是 bigquery 的新手,我不知道如何跨 table 查询数据并导出。但基于我对 SQL 的了解,这是可能的。您可以按标题汇总数据并导出结果。
唯一的问题是 bigquery 不是免费的。例如,上面的查询花费 6GB。查询 (on-demand) 前 1 TB 免费,之后每 TB 5 美元。 Bigquery 将根据您 select 列中处理的数据收费,即使您使用 'limit'。所以可能要花很多钱。