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 vs 包级函数

包级函数Processor
调用方式html.Extract(data)p, _ := html.New(cfg); p.Extract(data)
缓存无(每次使用内部临时池)有,可配置 TTL 和容量
统计有,可查询命中率等指标
审计有,可配置审计管道
生命周期无需管理defer p.Close()
并发安全

选择建议

  • 一次性提取(CLI 工具、脚本)→ 包级函数
  • 服务端高频调用(Web 服务、爬虫)→ Processor
  • 需要审计/监控 → Processor
阶段页面你将学到
入门快速开始安装、基本用法、两种调用方式
核心内容提取Extract 全家族、Config 配置、Result 解读
格式输出格式Markdown / JSON 输出、自定义模板
性能缓存与复用Processor 生命周期、缓存调优、批量处理
扩展链接提取链接提取、分组、资源发现
安全审计管道审计系统、自定义 Sink、安全监控
高级测试与自定义自定义 Scorer、ContentNode、测试模式
参考速查表常用 API 一览

下一步