HTML
Производственный инструмент извлечения HTML-контента с поддержкой автоматического определения кодировок (15+), интеллектуального распознавания статей, извлечения ссылок/медиа и многоформатного вывода.
Возможности
- Интеллектуальное распознавание статей — автоматическое выявление и извлечение основного содержимого страницы с удалением шума (навигация, реклама)
- Очистка контента — автоматическая очистка HTML, удаление опасных тегов и атрибутов для предотвращения XSS-атак
- Извлечение метаданных — автоматическое извлечение заголовков, изображений, ссылок, видео, аудио и другой структурированной информации
- Многоформатный вывод — три формата вывода: простой текст, Markdown, JSON
- Автоматическое определение кодировок — поддержка UTF-8, GBK, Shift_JIS, Windows-1252 и более 15 кодировок
- Пакетная обработка — параллельное пакетное извлечение со встроенным пулом объектов Processor
- Извлечение ссылок — независимый API извлечения ссылок с группировкой по типам
- Система аудита — подключаемый конвейер аудита с поддержкой нескольких Sink-ов и фильтрацией событий
- Защита безопасности — ограничение размера ввода, ограничение глубины, защита от обхода пути, восстановление после паники
Установка
bash
go get github.com/cybergodev/htmlБыстрый старт
go
package main
import (
"fmt"
"log"
"github.com/cybergodev/html"
)
func main() {
data := []byte(`<html><head><title>Пример</title></head>
<body><h1>Заголовок</h1><p>Основной текст</p></body></html>`)
result, err := html.Extract(data)
if err != nil {
log.Fatal(err)
}
fmt.Println(result.Title) // Вывод: Пример
fmt.Println(result.Text) // Вывод: Заголовок\n\nОсновной текст
}Обзор архитектуры
Библиотека HTML построена вокруг трёх ключевых типов:
text
Config
│
▼
Processor ──→ Result
│ │ │
│ │ ├── Text / Title
│ │ ├── Images / Videos / Audios
│ │ ├── Links
│ │ └── WordCount / ReadingTime
│ │
│ ├── Cache(кэш)
│ ├── Statistics(статистика)
│ └── AuditLog(аудит)
│
├── Scorer(пользовательский скоринг ── расширяемый)
└── AuditSink(вывод аудита ── расширяемый)| Тип | Назначение | Описание |
|---|---|---|
Config | Конфигурация | Центр управления всем поведением, предоставляет 4 предустановки |
Processor | Движок | Государственный движок обработки, управляющий кэшем, статистикой, аудитом |
Result | Результат | Структурированный вывод извлечения, содержащий текст и все метаданные |
Processor против функций уровня пакета
| Функции пакета | Processor | |
|---|---|---|
| Способ вызова | html.Extract(data) | p, _ := html.New(cfg); p.Extract(data) |
| Кэширование | Нет (каждый раз используется внутренний временный пул) | Да, настраиваемый TTL и ёмкость |
| Статистика | Нет | Да, доступны метрики, такие как попадания в кэш |
| Аудит | Нет | Да, настраиваемый конвейер аудита |
| Жизненный цикл | Не требует управления | Требуется defer p.Close() |
| Потокобезопасность | Да | Да |
Рекомендации по выбору
- Однократное извлечение (CLI-утилиты, скрипты) → Функции пакета
- Высокочастотные вызовы на сервере (веб-сервисы, сканеры) → Processor
- При необходимости аудита/мониторинга → Processor
| Этап | Страница | Вы узнаете |
|---|---|---|
| Начало | Быстрый старт | Установка, базовое использование, два способа вызова |
| Основа | Извлечение контента | Семейство Extract, конфигурация Config, интерпретация Result |
| Формат | Форматы вывода | Вывод в Markdown / JSON, пользовательские шаблоны |
| Производительность | Кэширование и повторное использование | Жизненный цикл Processor, настройка кэша, пакетная обработка |
| Расширение | Извлечение ссылок | Извлечение ссылок, группировка, обнаружение ресурсов |
| Безопасность | Конвейер аудита | Система аудита, пользовательские Sink, мониторинг безопасности |
| Продвинутый | Тестирование и расширения | Пользовательский Scorer, ContentNode, режим тестирования |
| Справочник | Шпаргалка | Обзор часто используемых API |
Следующие шаги
- Быстрый старт - Руководство для начинающих за 5 минут
- Шпаргалка - Краткий справочник часто используемых операций
- Справочник API - Полная документация по API