package main
import (
"fmt"
"github.com/PuerkitoBio/goquery"
"log"
"net/http"
)
// 定义一个简单的HTTP GET函数
func HttpGet(url string) (string, error) {
resp, err := http.Get(url)
if err != nil {
return "", err
}
if resp.StatusCode != 200 {
return "", fmt.Errorf("status code error: %d %s", resp.StatusCode, resp.Status)
}
return "", nil
}
// 使用goquery解析HTML并提取信息
func ParseHtmlWithGoQuery(url string) (string, error) {
// 获取HTML文档
doc, err := goquery.NewDocument(url)
if err != nil {
log.Fatal(err)
}
// 查询并打印每个<h1>标签的内容
doc.Find("h1").Each(func(i int, s *goquery.Selection) {
fmt.Printf("h1: %s\n", s.Text())
})
return "", nil
}
func main() {
url := "https://www.example.com"
// 调用封装好的HTTP GET函数
if _, err := HttpGet(url); err != nil {
log.Fatal(err)
}
// 调用使用goquery解析HTML的函数
if _, err := ParseHtmlWithGoQuery(url); err != nil {
log.Fatal(err)
}
}
这个示例代码展示了如何封装HTTP GET请求和使用goquery解析HTML的过程,并在main函数中调用这些封装好的函数。这种封装可以让代码更加模块化和易于维护。