Parser - html
基本介绍
HTML 文档解析器是 Document Parser 接口的一个实现,用于将 HTML 网页内容解析为纯文本。该组件实现了 Eino: Document Parser 接口使用说明,主要用于以下场景:
- 需要从网页中提取纯文本内容
- 需要获取网页的元数据(标题、描述等)
特性介绍
HTML 解析器具有以下特点:
- 支持选择性提取页面内容,灵活的内容选择器配置 (html selector)
- 自动提取网页元数据 (metadata)
- 安全的 HTML 解析
使用方式
组件初始化
HTML 解析器通过 NewParser
函数进行初始化,主要配置参数如下:
parser, err := NewParser(ctx, &Config{
Selector: &selector, // 可选:内容选择器,默认为 body
})
配置参数说明:
Selector
:可选参数,指定要提取的内容区域,使用 goquery 选择器语法- 例如:
body
表示提取<body>
标签内容 #content
表示提取 id 为 “content” 的元素内容
- 例如:
元数据说明
解析器会自动提取以下 metadata:
html.MetaKeyTitle
("_title"):网页标题html.MetaKeyDesc
("_description"):网页描述html.MetaKeyLang
("_language"):网页语言html.MetaKeyCharset
("_charset"):字符编码html.MetaKeySource
("_source"):文档来源 URI
完整使用示例
基本使用
package main
import (
"context"
"strings"
htmlparser "github.com/cloudwego/eino-ext/components/document/parser/html"
"github.com/cloudwego/eino/components/document/parser"
)
func main() {
ctx := context.Background()
// 初始化解析器
p, err := htmlparser.NewParser(ctx, nil) // 使用默认配置
if err != nil {
panic(err)
}
// HTML 内容
html := `
<html lang="zh">
<head>
<title>示例页面</title>
<meta name="description" content="这是一个示例页面">
<meta charset="UTF-8">
</head>
<body>
<div id="content">
<h1>欢迎</h1>
<p>这是正文内容。</p>
</div>
</body>
</html>
`
// 解析文档
docs, err := p.Parse(ctx, strings.NewReader(html),
parser.WithURI("https://example.com"),
parser.WithExtraMeta(map[string]any{
"custom": "value",
}),
)
if err != nil {
panic(err)
}
// 使用解析结果
doc := docs[0]
println("内容:", doc.Content)
println("标题:", doc.MetaData[htmlparser.MetaKeyTitle])
println("描述:", doc.MetaData[htmlparser.MetaKeyDesc])
println("语言:", doc.MetaData[htmlparser.MetaKeyLang])
}
使用选择器
package main
import (
"context"
htmlparser "github.com/cloudwego/eino-ext/components/document/parser/html"
)
func main() {
ctx := context.Background()
// 指定只提取 id 为 content 的元素内容
selector := "#content"
p, err := htmlparser.NewParser(ctx, &htmlparser.Config{
Selector: &selector,
})
if err != nil {
panic(err)
}
// ... 解析文档的代码 ...
}
在 loader 中使用
可参考 Eino: Document Parser 接口使用说明 中的示例
相关文档
最后修改
January 9, 2025
: feat: add eino cn docs (#1182) (ad75444)