Об этом проекте
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` (список удаленных элементов с причинами). Это помогает диагностировать, почему контент неправильно удаляется или сохраняется.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.