在爬虫中,网页解析是一个很重要的步骤,它的目的是从网页中提取我们需要的信息。在 Go 中,我们通常使用 goquery
或 html
包来解析 HTML 文档。
在这个章节,我们将使用 goquery
来解析网页并提取链接。首先,你需要使用 go get
命令来安装 goquery
:
go get github.com/PuerkitoBio/goquery
接着,我们可以使用 goquery
的 NewDocumentFromReader
函数来从 io.Reader
创建一个新的文档,然后使用 Find
函数来查找所有的 a
标签,并使用 Attr
函数来获取它们的 href
属性:
func fetchAndParse(url string) ([]string, error) {
resp, err := http.Get(url)
if err != nil {
return nil, err
}
defer resp.Body.Close()
doc, err := goquery.NewDocumentFromReader(resp.Body)
if err != nil {
return nil, err
}
var links []string
doc.Find("a").Each(func(i int, s *goquery.Selection) {
href, ok := s.Attr("href")
if ok {
links = append(links, href)
}
})
return links, nil
}
现在,我们的 fetchAndParse
函数可以访问一个网页并返回它的所有链接。
注意,这个函数返回的链接可能是相对链接,你可能需要使用 url
包的 ResolveReference
函数来将它们转换为绝对链接。
在实际的应用中,你可能需要从网页中提取更多的信息,例如标题、正文、图片等。你可以使用 goquery
的 Find
函数来查找你需要的元素,然后使用 Text
、Attr
等函数来获取它们的内容和属性。
希望这个例子可以帮助你理解如何在 Go 中解析 HTML 文档。虽然这个例子很简单,但它涵盖了网页解析的基本概念。你可以根据需要扩展这个例子,编写更复杂的网页解析代码。