go语言用goquery库解析多层html网页
首先需要安装goquery库,可以使用以下命令进行安装:
go get github.com/PuerkitoBio/goquery
接下来,假设我们要解析的网页是以下结构:
<html>
<head>
<title>My Page</title>
</head>
<body>
<div id="content">
<h1>Welcome to my page</h1>
<ul class="list">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</div>
</body>
</html>
我们可以使用以下代码解析该网页:
package main
import (
"fmt"
"log"
"net/http"
"github.com/PuerkitoBio/goquery"
)
func main() {
// 发送http请求获取网页内容
resp, err := http.Get("http://example.com")
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
// 使用goquery解析网页内容
doc, err := goquery.NewDocumentFromReader(resp.Body)
if err != nil {
log.Fatal(err)
}
// 获取网页标题
title := doc.Find("title").Text()
fmt.Println("Title:", title)
// 获取div#content下的h1标签内容
h1 := doc.Find("#content h1").Text()
fmt.Println("H1:", h1)
// 获取ul.list下的所有li标签内容
items := []string{}
doc.Find("ul.list li").Each(func(i int, s *goquery.Selection) {
items = append(items, s.Text())
})
fmt.Println("Items:", items)
}
运行以上代码,输出结果如下:
Title: My Page
H1: Welcome to my page
Items: [Item 1 Item 2 Item 3]
通过以上代码,我们可以看到goquery库的强大之处,可以轻松地解析多层html网页。
原文地址: https://www.cveoy.top/t/topic/bUQt 著作权归作者所有。请勿转载和采集!