发布时间:2024-11-21 17:51:39
标签 } for c := n.FirstChild; c != nil; c = c.NextSibling { parse(c) } } parse(doc) ``` 上述代码通过递归的方式遍历HTML文档的节点,并根据节点类型和标签名来进行相应的处理。 ## 示例应用:获取标题和段落内容 为了更好地演示如何解码HTTP应答并处理HTML内容,我们可以编写一个简单的示例应用,用来获取网页的标题和段落内容。 ```go resp, err := http.Get("http://example.com") defer resp.Body.Close() if err != nil { // 处理HTTP请求错误 } doc, err := html.Parse(resp.Body) if err != nil { // 处理HTML解析错误 } var getTitleAndParagraphs func(*html.Node) (string, []string) getTitleAndParagraphs = func(n *html.Node) (string, []string) { var title string var paragraphs []string if n.Type == html.ElementNode && n.Data == "title" { title = n.FirstChild.Data } if n.Type == html.ElementNode && n.Data == "p" { paragraphs = append(paragraphs, n.FirstChild.Data) } for c := n.FirstChild; c != nil; c = c.NextSibling { t, ps := getTitleAndParagraphs(c) if title == "" { title = t } paragraphs = append(paragraphs, ps...) } return title, paragraphs } title, paragraphs := getTitleAndParagraphs(doc) fmt.Println("Title:", title) fmt.Println("Paragraphs:") for _, p := range paragraphs { fmt.Println("-", p) } ``` 上述代码通过递归的方式遍历HTML文档,并将标题和段落内容保存在变量中。最后我们可以将其打印出来。 ## 总结 本文介绍了如何使用Go语言解码HTTP应答并对其内容进行处理。通过对HTTP应答的解析,我们可以根据具体的需求来获取所需的信息。在处理HTML内容时,我们还可以使用`golang.org/x/net/html`包来进行HTML解析。希望本文对于学习Go语言的HTTP应答解码有所帮助。