本文介绍如何在 go 中借助 goquery 库,通过类似 jquery 的 css 选择器(如 `.funcname`)高效解析 html 页面并提取目标元素的文本内容或属性值。
在 Go 语言生态中,原生 net/html 包虽功能完备,但直接操作 DOM 节点较为繁琐。更推荐使用成熟的第三方库 github.com/PuerkitoBio/goquery,它提供链式、jQuery 风格的 API,支持标准 CSS 选择器(如类名 .funcname、ID #header、标签 div、组合选择器 div.funcname a 等),极大简化 HTML 解析流程。
首先安装 goquery:
go get github.com/PuerkitoBio/goquery
以下是一个完整示例:从 HTML 字符串中提取所有具有 class="funcname" 的
元素的文本内容:package main
import (
"fmt"
"strings"
"github.com/PuerkitoBio/goquery"
)
func main() {
html := `
fmt.Println
log.Printf
os.OpenFile
`
doc, err := goquery.NewDocumentFromReader(strings.NewReader(html))
if err != nil {
panic(err)
}
// 查找所有 class="funcname" 的元素
doc.Find(".funcname").Each(func(i int, s *goquery.Selection) {
text := strings.TrimSpace(s.Text()) // 去除首尾空白
fmt.Printf("第 %d 个 funcname: %s\n", i+1, text)
})
}
// 输出:
// 第 1 个 funcname: fmt.Println
// 第 2 个 funcname: os.OpenFileif doc.Find(".funcname").Length() == 0 {
fmt.Println("未找到匹配的 .funcname 元素")
}掌握 goquery 后,HTML 抓取、数据清洗和简单爬虫开发将变得直观而可靠——CSS 选择器即代码,所见即所得。
立即学习“前端免费学习笔记(深入)”;