Что если представить habr в виде obsidian-графа? |
||
|
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ Атаки на ИИ Внедрение ИИИИ теория Компьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Промпты. Генеративные запросы Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2025-09-22 11:33 Ночью (а точнее уже утром), я не мог уснуть, из-за навязчивой мысли в голове.. А что если спарсить часть статей с хабра и представить их в виде obsidian графа, будет ли это выглядеть, как красивая база знаний? Откуда датасет? Первым делом, я решил найти API хабра, для получения статей. Как я понял, они закрытые.. Мобильное приложение, насколько я знаю, тоже берёт статьи с сайта, без API. Тогда, я вспомнил свой старый проект, который я начал делать, когда только учился парсингу (там был ужас по коду), скрапер на beautifulsoup4 и requests. К моему удилению, когда я откопал его, и запустил, он заработал. За более чем за 2 года названия классов, по которым я получал данные не изменились. Я решил переписать скрипт на асинхронный aiohttp, чтобы ускорить парсинг, но тут уже сам хабр внёс свои коррективы: При асинхронном парсинге он кидается 503 статус-кодом и блокирует по ip на некоторое время (ничего личного, просто анти-ddos). Значит придётся парсить последовательно, страницу, за страницей. Одну страницу, при максимальной оптимизации, я собираю за Затем нужно было немного переписать логику:
Уже начав собирать статьи я столкнулся с интересным поведением в консоли: Статьи с нечётным id всегда выдавали статус-код 404, не найдено. Я написал небольшой скрипт, для анализа логов. И моя гипотеза действительно подтвердилась: на хабре нет статей с нечётным id и это ускорит сбор статей в 2 раза. Но в итоге, после очередного сбоя, я решил ограничиться базой из 43К статей (при таком кол-ве обсидиан загружает граф, в течение получаса). Связи Obsidian полюбили за возможность создания связей между заметками: теги, папки и так далее. Если их не использовать, то магии на графе не будет. Я решил ограничиться тегом сложности статьи и указанием автора в начале, однако, пришлось загружать полный текст статьи, чтобы работали ссылки на пользователей/другие статьи, оставленные авторами. Также кол-во просмотров, время на чтение и дата публикации записаны в метаданные статей, но в построении графа не участвуют (если будет слишком много данных, для создания связей, графу это может повредить). Результаты На выходе мы имеем такой граф: Каждая точка - статья. Статьи сгруппированы по сложности (соответствующий цвет). По графу, можно анализировать некоторые вещи, к примеру, отдельностоящие круглые скопления точек это авторы с самым большим кол-вом статей. Вот, к примеру, скопление статей @denis-19: Самое интересное, что при наведение на статью/тег/автора мы видим всё, что с ним связано: Благодарю за прочтение. Исходники доступны тут. Источник: habr.com Комментарии: |
|