Об этом проекте

Defuddle — это библиотека на JavaScript, которая извлекает основной контент с веб-страниц, очищая его от мусора, такого как комментарии, боковые панели, шапки и подвалы. Она возвращает очищенный HTML или Markdown, что полезно для веб-клиппинга, режимов чтения или анализа контента. ## Ключевые возможности - **Извлечение контента**: Автоматически обнаруживает и извлекает основной контент страницы, удаляя несущественные элементы. - **Стандартизация HTML**: Нормализует заголовки, блоки кода, сноски, математические формулы и выделения для единообразного вывода. - **Извлечение метаданных**: Извлекает заголовок, автора, описание, дату публикации и данные schema.org. - **Несколько сборок**: Ядро (браузер), полная (добавляет преобразование математики/Markdown) и Node.js (работает с любой реализацией DOM). - **CLI-инструмент**: Парсинг URL, файлов или стандартного ввода прямо из терминала. - **Режим отладки**: Подробное логирование и отслеживание удалений для диагностики проблем извлечения. - **Настраиваемый конвейер**: Включение/отключение отдельных этапов обработки (например, удаление скрытых элементов, удаление изображений). ## Примеры использования ### Браузер ```javascript import Defuddle from 'defuddle'; const defuddle = new Defuddle(document); const result = defuddle.parse(); console.log(result.content); // Очищенный HTML ``` ### Node.js (с linkedom или JSDOM) ```javascript import { parseHTML } from 'linkedom'; import { Defuddle } from 'defuddle/node'; const { document } = parseHTML(html); const result = await Defuddle(document, 'https://example.com/article', { markdown: true }); ``` ### CLI ```bash npx defuddle parse page.html --markdown npx defuddle parse https://example.com/article --json cat page.html | npx defuddle parse --output result.html ``` ## Объект ответа Возвращает объект со свойствами, такими как `title`, `author`, `content`, `description`, `domain`, `favicon`, `image`, `language`, `published`, `site`, `wordCount` и другими. ## Опции Ключевые опции включают `markdown` (преобразование в Markdown), `debug` (включение логирования), `removeHiddenElements`, `removeSmallImages`, `contentSelector` (обход автоопределения) и `useAsync` (разрешение стороннего резервного варианта для SPA). ## Разработка Сборка выполняется с помощью `npm install && npm run build`. Проект использует конвейер шагов для оценки контента, удаления элементов и стандартизации. ## Сторонние сервисы Когда включен `useAsync` и локальный контент не найден (например, SPA с рендерингом на клиенте), Defuddle может обращаться к сторонним API, таким как FxTwitter для контента X/Twitter. Отключите с помощью `useAsync: false`. ## Отладка Включите `debug: true`, чтобы получить поле `debug` с `contentSelector` (CSS-путь основного контента) и `removals` (список удаленных элементов с причинами). Это помогает диагностировать, почему контент неправильно удаляется или сохраняется.