Я ищу общее количество просмотров страниц (с июля 2015 года, даты выпуска PageViews API, до 1 января 2019 года) любой страницы французского проекта Википедии.
Использование PageViews API (Как использовать API Википедии для получения статистики просмотра определенной страницы в Википедии?) кажется мне слишком тяжелым: мне нужны данные с более чем 2 миллионов страниц.
Использование MassView (https://tools.wmflabs.org/massviews/) с запросом, возвращающим все заголовки страниц (https://quarry.wmflabs.org/query/34473), также не работает: MassView имеет ограничение в 20000 страниц и не может получить данные для некоторых заголовков страниц из результатов моего запроса.
Знаете ли вы какие-нибудь более эффективные инструменты для этого?
Вы можете скачать дампы всех просмотров страниц отсюда: https://dumps.wikimedia.org/other/pageviews/
Не боюсь. Если вы ищете миллионы точек данных, вам придется работать с дампами. Это все равно должно быть быстрее, чем сделать 2 миллиона звонков.
Нашел это: https://dumps.wikimedia.org/other/pagecounts-ez/merged/, который представляет собой объединенные дампы просмотров страниц. Задокументировано здесь: https://wikitech.wikimedia.org/wiki/Analytics/Data_Lake/Traffic/Просмотры страниц
Вот пример скрипта 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)
С такими файлами, по одному в месяц, стало легко настроить такой рабочий процесс: отфильтровать залоговые права, которые мне действительно нужны (французская вики), ЗАГРУЗИТЬ ДАННЫЕ INFILE в базу данных MySQL и снова запросить их с помощью Python.
API Википедии является мощным, например, это может получить просмотр страницы Apollo_10 французской Википедии. Сделать скрипт на основе этого не так уж и сложно.
Если вы считаете, что использовать API для запросов ко всем сайтам тяжело, вы можете использовать google bigquery. У него есть данные о просмотрах страниц в открытом наборе данных. Об этом есть руководство.
Вот мой пример:
select * from `bigquery-public-data.wikipedia.pageviews_2015` where datehour = '2015-07-12 18:00:00 UTC';
Если вы хотите получить конкретную страницу французской вики, вы можете указать «wiki=fr» и «title = xxx». Поскольку я новичок в bigquery, я не знаю, как запрашивать данные через таблицу и экспортировать. Но это возможно из-за моего плохого знания SQL. Вы можете агрегировать данные по заголовку и экспортировать результат.
Единственная проблема в том, что bigquery платный. Например, запрос выше стоил 6 ГБ. Запросы (по требованию) бесплатны для первого 1 ТБ и 5 долларов за ТБ после. Bigquery будет взимать плату в соответствии с данными, обработанными в выбранных вами столбцах, даже если вы используете «лимит». Так что это может стоить дорого.
Спасибо. Проблема в том, что эти файлы очень большие. Вы знакомы с подмножеством французского проекта?