Предлагается следующая классификация ресурсов, публикующих информацию о результатах проведения мероприятий по возможности получения данных:
- ресурсы, с которых нельзя получить информацию – к ним будут относится сайты, на которых для доступа к данным необходима авторизация, либо сайты, на которых информация представлена в виде сканов документов.
- ресурсы, с которых можно получить информацию – к ним будут относится сайты, на которых для доступа к данным не нужно проходить процедуру авторизации т.е. данные представлены в открытом доступе и в формате удобном для последующей программной обработки (не отсканированные копии документов).
Для осуществления сбора данных необходимо, чтобы они находились на веб-ресурсе, с которого можно получить информацию. Информация о школьниках и студентах собирается с учетом дальнейшего ее преобразования программными средствами – любые данные не подойдут (так как данные в сети «Интернет» представлены в различных форматах). При сборе и обработке данных об участниках мероприятий возникают следующие трудности:
- некоторые организаторы публикуют результаты в виде сканов документов, которые не представляется возможным обрабатывать программными средствами;
- результаты публикуются в разных форматах: таблицы на сайтах олимпиад, таблицы в документах формата pdf, xls, xlsx;
- в таблицах содержатся разные атрибуты;
- одинаковые атрибуты данных могут называться по-разному;
- при обработке данных из таблиц программными средствами возникают различные ошибки из-за плохо структурированного оформления файлов с результатами и наличия в них случайных символов;
- для публикации результатов заключительного этапа ВсОШ каждый год создается новый сайт для каждого предмета;
- перечень мероприятий формируется каждый год, поэтому не существует определенного списка мероприятий;
- некоторые организаторы не предоставляют открытый доступ к информации – необходима регистрация в личном кабинете участника мероприятия.
Выделим распространенные форматы данных представления данных и способы их обработки. В большинстве случаев данные о результатах мероприятий представлены в виде таблиц. Таблицы находятся:
- на web-ресурсе;
- в документе формата pdf;
- в документе формата xls / xlsx.
Работа с таблицами представленными на web-страницах
Таблицы на сайтах представлены следующим HTML кодом:
<table>
<tr>
<th>Заголовок 1</th>
<th>Заголовок 2</th>
...
<th>Заголовок N</th>
</tr>
<tr>
<td>Данные в первой строке под заголовком 1</td>
<td>Данные в первой строке под заголовком 2</td>
...
<td>Данные в первой строке под заголовком N</td>
</tr>
<tr>
<td>Данные во второй строке под заголовком 1</td>
<td>Данные во второй строке под заголовком 2</td>
...
<td>Данные во второй строке под заголовком N</td>
</tr>
...
</table>
Если информация о результатах проведения мероприятия представлена в виде таблицы на web-ресурсе, то для сбора и обработки данных предлагается выполнять следующие действия:
1. Сохранить web-страницу для удобства последующей обработки. Сделать это можно следующими способами:
- нажать правой кнопкой мыши на странице и выбрать пункт «Сохранить как…»;
- установить специальное расширение для браузера, например SingleFile, которое позволит сохранить полную страницу в едином HTML-файле нажатием одной кнопки;
- использовать сочетание клавиш Ctrl+U для показа исходного кода страницы, после чего использовать сочетание клавиш Ctrl+A для выделение всего текста после чего вставить выделенный текст в пустой файл и сохранить его.
2. Если таблица на web-странице представлена HTML кодом аналогичным вышеуказанному (имеется в виду правильная верстка страницы, где все теги открыты и закрыты в соответствии с правилами HTML) тогда используя язык программирования Python и библиотеку Beautiful Soup (библиотека для извлечения данных из файлов HTML и XML) необходимо распарсить таблицу, вычленить необходимые атрибуты данных об участниках мероприятия и сохранить их в удобном формате для дальнейшего хранения и обработки – например в формате JSON.
3. Если код таблицы на web-странице не валидный – присутствуют незакрытые теги строк или столбцов, то библиотека Beautiful Soup не справится с парсингом данной web-страницы. В этом случае рекомендуется использовать регулярные выражения. В языке программирования Python их можно использовать, импортировав модуль «re».
Работа с таблицами, представленными в документах формата pdf
Если информация о результатах проведения мероприятия представлена в виде таблицы в документе формата pdf, то для сбора и обработки данных предлагается выполнять следующие действия:
- Сохранить файл для последующей его обработки.
- Используя язык программирования Python и библиотеку tabula произвести парсинг таблицы и выбор необходимых атрибутов данных об участниках мероприятия и сохранить их. При парсинге рекомендуется использовать функцию read_pdf модуля tabula, которая возвращает таблицу в формате pandas DataFrame.
Работа с таблицами, представленными в документах формата xls / xlsx.
Если информация о результатах проведения мероприятия представлена в виде таблицы в документе формата xls / xlsx, то для сбора и обработки данных предлагается выполнять следующие действия:
- Сохранить файл для последующей его обработки.
- Используя язык программирования Python и библиотеку pandas произвести парсинг таблицы и выбор необходимых атрибутов данных об участниках мероприятия и сохранить их. При парсинге рекомендуется использовать функцию read_excel библиотеки pandas, которая возвращает таблицу в формате pandas DataFrame.