Skip to content

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

Следующие шаги