Ночью (или, скорее, утром) я не мог заснуть из -за одержимой мысли в моей голове.

Но что произойдет, если вы нажмете часть статей с Хаброй и придумывают их в виде обсидиана, будет ли это выглядеть как прекрасная база знаний?

Откуда набор данных?

Прежде всего, я решил найти 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, не найденные.

ЧИТАТЬ  Tears of the Kingdom лучше с этими контроллерами Switch | цифровые тренды

Я написал небольшой сценарий для анализа газет. И моя гипотеза была действительно подтверждена: нет статей со странным идентификатором на HABR. И это ускорит коллекцию статей до 2 раза.

Но, в конце концов, после следующего сбоя я решил ограничить себя базой из 43 тыс. Статьи (с таким количеством, обсидиан загружает график в течение получаса).

Связь

Обсидиан влюбился в возможность создания соединений между примечаниями: этикетки, файлы и т. Д.

Если они не используются, на колонке не будет магии.

Я решил ограничить себя ярлыком сложности статьи и указанием автора в начале, однако мне пришлось загрузить полный текст статьи на работу по ссылкам на пользователей / другие статьи, оставленные авторами.

Кроме того, количество просмотров, время чтения и дата публикации записываются в статьях метаданных, но они не участвуют в построении графики (если слишком много данных, для создания ссылок, это может повредить графику).

Результаты

На выходе у нас есть такая графика:

Общий результат. Проверено на нескольких скриншотах.

Каждый пункт — это статья. Элементы сгруппированы по сложности (соответствующий цвет).

Мы видим, что каждая точка - это статья, в которой есть свое имя.

Мы видим, что каждая точка — это статья, в которой есть свое имя.

В зависимости от столбца вы можете проанализировать определенные вещи, например, отдельные круглые кластеры точек являются авторами с наибольшим количеством элементов.

Hot K, Springs, Skopping Status @ denis-19:

Результат руководствуется автором.

Результат руководствуется автором.

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

Результат, когда он парит на теге "Простой"Полем

Результат, когда он видит на «простой» теге.

Спасибо за чтение. Источники доступны здесь:

Source