В этом году в сентябре нашему сайту ОЭФ исполнилось 15 лет.
В этот небольшой юбилей я решил сделать полную ревизию сайта. Ни для кого не секрет, что последнее время активность интернет-пользователей поменялась в пользу соцсетей и мессенджеров. С каждым годом сайты теряют популярность всё больше и больше. Сайт ОЭФ также не является исключением. Тем не менее, на сайте имеется большой архив различной информации. Я решил проанализировать все разделы сайта и посмотреть доступность и актуальность опубликованных материалов. В дальнейшем я обязательно изложу результат всей проделанной работы. Одно знаю точно: на сайте присутствуют недоделанные и недописанные разделы, материалы с недоступными («битыми») ссылками.
Весь сайт поделён на блоки, расположенные по левому и правому краям главной страницы. Особое внимание заслуживает блок с названием «Архив записей». Это своего рода календарь записей по месяцам, начиная с сентября 2010 года (с даты образования сайта), который ежемесячно пополняется. Иначе говоря, это те самые записи новостей, которые чаще всего публикуются пользователями на основной странице сайта. Анализом этого архива я занялся в первую очередь, так как это – самая весомая часть нашего сайта. Я поставил себе задачу: посмотреть все записи архива, проверить доступность информации, присвоить каждой записи маркер тематики (категории) и сделать в итоге небольшой, образно говоря, путеводитель. А со временем – сделать путеводитель по всему сайту в целом.
Для анализа архива записей я решил прибегнуть к инструментам автоматизации по обработке информационных данных и регулярных выражений. Здесь я напишу кратко, каким образом, и какими инструментами я проделывал эту работу. Итак, имеется календарь архива записей новостей. При нажатии на соответствующий месяц и год открывается страница с кратким списком записей новостей за данный месяц. Эту информацию я и взял за основу в качестве входных данных. В этом кратком списке доступна следующая информация: название записи, ссылка на запись, дата и время записи, число комментариев. Ссылки на такие страницы образуют закономерную последовательность: https://r3e.ucoz.ru/news/2010-09, https://r3e.ucoz.ru/news/2010-10 и так далее. То есть, в конце ссылки – год и месяц в очевидном формате.
С помощью утилиты «curl» из командной строки Windows 10, минуя браузер, можно скачивать html-страницу по ссылке. В Excel я сформировал bat-сценарий для скачивания множества html-страниц с помощью curl с кратким списком новостей, начиная с сентября 2010 года и заканчивая текущим месяцем. Запустив данный сценарий, я получил 183 html-файла с содержимым страниц. То есть, наш сайт существует 183 месяца.
В каждом из таких файлов очень много лишней информации, так как сохранялась вся страница целиком. А нам нужна только полезная информация – краткие заголовки записей новостей по центру страницы. Я проанализировал сложную древовидную структуру html-кода в браузере с помощью встроенного «инструмента разработчика». При этом я выделил блок html-кода «<table>», а именно – уникальную строчку «<table border="0" width="100%" cellspacing="1" cellpadding="2">», которая отвечает как раз за список записей новостей.
С помощью расширенного терминала PowerShell в Windows 10 я написал скрипт обработки множества html-файлов, который, перебирая все файлы, вырезает по заданному шаблону нужный кусок html-кода, а затем собирает эти куски в новый html-файл. В результате выполнения этого скрипта у меня получился один большой html-файл, который содержит все краткие записи новостей за все месяцы и годы. Он легко открывается в браузере, и там нет ненужной лишней информации. Более внимательные пользователи знают, что кроме заголовков записей в календаре содержатся заголовки дня, состоящие из числа, месяца и дня недели. А информация о годе, как и о месяце с днём, содержится в гиперссылке в этом заголовке (например, https://r3e.ucoz.ru/news/2010-09-28).
Если содержимое этого файла (html-код) скопировать и вставить в новый документ Excel, то он не вставится в виде сырого html-текста, а вставится сразу в проинтерпретированном виде, будто мы его открываем в браузере. В частности, названия заголовков новостей будут содержать гиперссылки, а их необходимо извлечь в отдельные ячейки. Это я сделал с помощью простого макроса в VBA и извлёк все ссылки в соседний столбец, получив их в виде явного текста. Скопировав оба столбца и вставив на новый лист Excel как текст, я ушёл от html-форматирования. Тем самым я получил исходный материал для предстоящей сложной обработки в Excel.
Подробности обработки и парсинга текста в Excel можно опустить. Напишу кратко. В первую очередь необходимо очистить получившийся список от пустых строк. Это я делаю с помощью функции «ПОИСКПОЗ()» по маркерам, а маркеры я формирую с помощью функции «ЕПУСТО()». Значения по найденным позициям я получаю с помощью двух вложенных функций «ДВССЫЛ()» и «АДРЕС()». Далее нужно проявлять логическую и математическую смекалку, чтобы разделить записи новостей и записи заголовков дней и месяцев. Последние в конце концов исключаются из материала, но эта информация в результирующей таблице приписывается к каждой записи заголовка новостей совместно со значением времени, которое в свою очередь извлекается из записи названия новости. Вот такие сложности. А из заголовка новостей я извлекаю не только время, но и число комментариев, записанное в конце в скобочках.
В итоге получилась таблица с пятью колонками: «№», «Дата и время», «Число комментариев», «Название» и «Ссылка». Есть ещё несколько технических колонок для маркировки примечания по каждой новости на предмет тематики, доступности или других признаков. Для публикации таблицы на сайте необходимо сформировать html-код с требуемым оформлением. Этот процесс также можно автоматизировать в Excel, что я и делаю. При этом 5-ая колонка в новой таблице со ссылкой не требуется – она будет уже включена в название записи в формате гиперссылки. В зависимости от значения полей дополнительных колонок с маркерами на своё усмотрение я предам то или иное оформление соответствующей строки таблицы в html. Это может быть, например, цвет заливки или шрифта и прочие украшения для предания наглядности (на момент написания этого абзаца я глубоко эту мысль не развивал).
Таблицу с архивом всех записей я построил вышесказанными средствами за пару часов. А вот анализ и маркировка каждой записи требует куда большего времени – нужно вручную открыть каждую запись по ссылке и просмотреть. На текущий момент времени я просмотрел и промаркировал только третью часть всех записей. Результат такого маркирования – цветовое оформление строк таблицы. Его я буду обновлять по мере дальнейшего анализа записей. Более конкретно – я раскрашиваю не всю строку таблицы, а только первую ячейку с порядковым номером записи. Иначе таблица получилась бы слишком перегруженной по цвету и резала бы глаза. Всего я выделил пока что 9 категорий записей. Для них я отвёл 9 различных цветов: история, просто интересные записи, политика, поздравления, техника и софт, радиоспорт, объявления, деятельность ОЭФ, наш сайт и клуб ОЭФ. Можно спорить, что многие записи пересекаются по темам и категориям. Вы, как пользователи сайта, можете в комментариях к этому посту сами предложить свои варианты категорий и цветов и расставить их на записях, если это нужно. Ещё один признак записей – отсутствие прикреплённого материала или наличие битой ссылки. Такую запись в таблице я помечаю зачёркиванием порядкового номера записи в той же ячейке. Например, запись №2 «Репортаж с Орловского слета радиолюбителей». Постараюсь объяснить, почему это произошло спустя много лет. Пользователь, который публиковал запись, прикреплял то или иное медиа (аудио или видео), как правило, со своего файлообменника или со своего канала видеохостинга. То есть, здесь задействован сторонний ресурс. А со временем данный пользователь мог изменить приватность или вовсе удалить у себя этот материал, даже не задумываясь о последствиях на сайте ОЭФ в соответствующей публикации. Также тот или иной материал мог быть автоматически удалён на каналах и аккаунтах пользователя, так как с каждым годом ужесточалась политика авторского права. К счастью, бо́льшая часть материала, которым я владею, заново опубликована на сайте. Зачастую это – видеосюжеты.
Также я приведу небольшую интересную статистику по всем записям, которую я сделал в Excel.
Всего записей – 1400.
Всего комментариев – 3683.
Самое длинное название – 140 символов (запись №766).
Самое большое число комментариев – 172 (на записи №1004).
Среднее время суток публикации записи – 14:24.
Число записей по месяцам: 154, 146, 132, 122, 115, 66, 74, 103, 99, 106, 124, 159.
Больше всего записей по месяцам – в декабре (159) и январе (154).
Меньше всего записей по месяцам – в июне (66) и июле (74).
Число записей по годам: 76, 410, 152, 148, 103, 89, 63, 98, 53, 52, 39, 52, 21, 25, 12, 7.
Больше всего записей по годам – в 2011 г. (410) и 2012 г. (152).
Меньше всего записей по годам – в 2024 г. (12) и 2025 г. (7).
Средний промежуток времени между записями – 4 дня.
Максимальный промежуток времени между записями – 107 дней (№1374–№1375).
Число записей по дням неделям: 194, 194, 214, 198, 226, 216, 158.
Больше всего записей по дням неделям – по пятницам (226).
Меньше всего записей по дням неделям – по воскресеньям (158).
При попытке опубликовать html-страницу с сформированной мной таблицей полного архива записей я столкнулся с трудностями. Дело в том, что мой html-код получился слишком громоздкий, и система ucoz его не пропустила. Даже если бы я оптимизировал html-код с применением классов, то всё равно вряд ли бы что удалось. Поэтому я разбил таблицу на куски. Первый кусок – 2010 год. В этом неполном году всего-то 76 записей. Но следующий самый громоздкий по записям 2011 год пришлось разбить на 2 части: до и после июня. Затем, до 2020 года разделение идёт по годам. Начиная с 2020 и по текущий 2025 г. записи объединены в одну таблицу, так как их количество резко упало из-за снижения активности сайта.
|