package main
import (
"bytes"
"fmt"
"golang.org/x/net/html"
"strings"
)
// CleanHTMLTags 处理HTML内容并返回清理后的文本
func CleanHTMLTags(htmlContent string) (string, error) {
// 解析HTML内容
doc, err := html.Parse(strings.NewReader(htmlContent))
if err != nil {
return "", err
}
var buf bytes.Buffer
// 递归函数,用来遍历 HTML 树
var f func(*html.Node)
f = func(n *html.Node) {
// 处理文本节点
if n.Type == html.TextNode {
buf.WriteString(n.Data)
}
// 处理元素节点
if n.Type == html.ElementNode {
// 调试:输出当前节点的类型和标签名
fmt.Printf("ElementNode: %s\n", n.Data)
// 处理
标签,插入换行
if n.Data == "br" {
buf.WriteString("\n")
} else if n.Data == "table" {
// 处理表格标签
单元格 for td := tr.FirstChild; td != nil; td = td.NextSibling { if td.Data == "td" { buf.WriteString("[TD] ") f(td) // 递归处理 | 中的内容
}
}
//buf.WriteString("\nRow End\n")
}
}
//buf.WriteString("Table End\n")
} else if n.Data == "ul" {
// 处理无序列表
),并处理表格等标签 func CleanHTMLTags11(htmlContent string) (string, error) { // 解析HTML内容 doc, err := html.Parse(strings.NewReader(htmlContent)) if err != nil { return "", err } var buf bytes.Buffer var f func(*html.Node) // 遍历每个节点 // 改进后的处理代码 f = func(n *html.Node) { switch n.Type { case html.TextNode: // 处理文本节点,保留文本内容 buf.WriteString(n.Data) case html.ElementNode: // 针对 标签添加换行符 if n.Data == "br" { buf.WriteString("\n") } else if n.Data == "p" { // 对 标签处理,增加换行符 buf.WriteString("\n") } else if n.Data == "ul" { // 对
|