Ночью (или, скорее, утром) я не мог заснуть из -за одержимой мысли в моей голове.
Но что произойдет, если вы нажмете часть статей с Хаброй и придумывают их в виде обсидиана, будет ли это выглядеть как прекрасная база знаний?
Откуда набор данных?
Прежде всего, я решил найти API Habra для получения статей. Если я правильно понимаю, они закрыты.
Насколько я знаю, мобильное приложение также принимает статьи с сайта, без API.
Затем я вспомнил свой старый проект, который я начал делать, когда изучал анализ (был ужас по коду), Gratoir на BeautifulSup4 и запросы.
Когда я рыбачил, когда я выкопал его и запустил, он выиграл. В течение более 2 лет имена классов, по которым я получил данные, не изменились.
Я решил переписать асинхронный сценарий AIOOHTP, чтобы ускорить анализ, но здесь сам HABR внес свои коррективы:
С асинхронным анализом он запускает в коде 503 состояния и на некоторое время блокирует IP (ничего личного, просто анти-DDO).
Поэтому вы должны проанализировать страницу за страницей.
Страница, с максимальной оптимизацией, я собираю для 0.5
Несколько секунд это означает, что 140 часов пойдут на анализ всех предметов (около миллиона возможных идентификаторов).
1_000_000 * 0.5 = 170
Тогда необходимо было немного переписать логику:
-
Перенесите дизайн HTML на Markdown, поддерживаемый в обсидиане.
-
С тегами, пользователями и именами.
Интересный факт (из -за этого у меня есть сценарий на начальном стадионе): на Haber могут быть статьи без автора. Вы это видели? Я нет.
Уже начав собирать статьи, я встретил интересное поведение в консоли:
2025-09-15 00:45:26.017 | DEBUG | __main__:fetch:77 - [938037:8659] 404
2025-09-15 00:45:26.598 | SUCCESS | __main__:fetch:80 - [938036:8660] ok
2025-09-15 00:45:26.017 | DEBUG | __main__:fetch:77 - [938035:8661] 404
2025-09-15 00:45:26.598 | SUCCESS | __main__:fetch:80 - [938034:8662] ok
Идентификационные статьи всегда выпустили код штата 404, не найденные.
Я написал небольшой сценарий для анализа газет. И моя гипотеза была действительно подтверждена: нет статей со странным идентификатором на HABR. И это ускорит коллекцию статей до 2 раза.
Но, в конце концов, после следующего сбоя я решил ограничить себя базой из 43 тыс. Статьи (с таким количеством, обсидиан загружает график в течение получаса).
Связь
Обсидиан влюбился в возможность создания соединений между примечаниями: этикетки, файлы и т. Д.
Если они не используются, на колонке не будет магии.
Я решил ограничить себя ярлыком сложности статьи и указанием автора в начале, однако мне пришлось загрузить полный текст статьи на работу по ссылкам на пользователей / другие статьи, оставленные авторами.
Кроме того, количество просмотров, время чтения и дата публикации записываются в статьях метаданных, но они не участвуют в построении графики (если слишком много данных, для создания ссылок, это может повредить графику).
Результаты
На выходе у нас есть такая графика:
Каждый пункт — это статья. Элементы сгруппированы по сложности (соответствующий цвет).

В зависимости от столбца вы можете проанализировать определенные вещи, например, отдельные круглые кластеры точек являются авторами с наибольшим количеством элементов.
Hot K, Springs, Skopping Status @ denis-19:

Самое интересное, что когда вы руководите статьей / тегом / автором, мы видим все, что связано с ней:
