Golang中如何解析HTML并获取标签:实战代码示例
Golang中如何解析HTML并获取标签:实战代码示例 https://play.golang.org/p/Bkoeu8TMaB2
我哪里做错了?
2 回复
没关系,我搞明白了。我忘记加了一个"for"循环。
更多关于Golang中如何解析HTML并获取标签:实战代码示例的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在您提供的代码中,问题出在使用了html.Parse来解析HTML字符串,但未正确处理解析后的文档结构。html.Parse返回一个文档树,您需要遍历节点来提取标签。以下是修复后的代码示例,使用golang.org/x/net/html包正确解析HTML并获取所有标签:
package main
import (
"fmt"
"golang.org/x/net/html"
"strings"
)
func main() {
htmlStr := `<html><body><h1>Hello, World!</h1><p>This is a paragraph.</p></body></html>`
doc, err := html.Parse(strings.NewReader(htmlStr))
if err != nil {
panic(err)
}
var tags []string
var f func(*html.Node)
f = func(n *html.Node) {
if n.Type == html.ElementNode {
tags = append(tags, n.Data)
}
for c := n.FirstChild; c != nil; c = c.NextSibling {
f(c)
}
}
f(doc)
fmt.Println("Tags found:", tags)
}
代码解释:
- 使用
html.Parse解析HTML字符串为文档树。 - 定义递归函数
f遍历所有节点,当节点类型为html.ElementNode(即HTML元素)时,将标签名添加到切片中。 - 输出所有找到的标签:
[html body h1 p]。
在您的原始代码中,可能缺少节点遍历逻辑,导致无法提取标签。确保导入golang.org/x/net/html包(通过go get golang.org/x/net/html安装)。如果问题持续,请检查HTML字符串格式或提供更多错误细节。

