1 回答

TA贡献1830条经验 获得超3个赞
树<a href="link"><strong>Foo</strong>Bar</a>
看起来基本上是这样的:
ElementNode "a"(该节点还包括一个属性列表)
文本节点“Foo”
元素节点“强”
文本节点“条”
因此,假设您想要获取链接的纯文本(例如FooBar
),您将不得不遍历树并收集所有文本节点。例如:
func collectText(n *html.Node, buf *bytes.Buffer) {
if n.Type == html.TextNode {
buf.WriteString(n.Data)
}
for c := n.FirstChild; c != nil; c = c.NextSibling {
collectText(c, buf)
}
}
以及您功能的变化:
var f func(*html.Node)
f = func(n *html.Node) {
if n.Type == html.ElementNode && n.Data == "a" {
text := &bytes.Buffer{}
collectText(n, text)
fmt.Println(text)
}
for c := n.FirstChild; c != nil; c = c.NextSibling {
f(c)
}
}
- 1 回答
- 0 关注
- 283 浏览
添加回答
举报