gpt4 book ai didi

html - 为什么这个程序不打印任何东西?

转载 作者:数据小太阳 更新时间:2023-10-29 03:31:08 25 4
gpt4 key购买 nike

我正在尝试使用 Go 来解析 html。我想将 html 打印到终端,但我不明白为什么它不打印任何内容:

package main

import (
"fmt"
"log"
"net/http"

"golang.org/x/net/html"
)

func main() {
r, err := http.Get("https://google.com")
if err != nil {
log.Panicln(err)
}

defer func() {
err := r.Body.Close()
if err != nil {
fmt.Println(err)
}
}()

node, err := html.Parse(r.Body)
if err != nil {
log.Panicln(err)
}
fmt.Println(node.Data)
}

我知道有多种打印 html 的方法,但我不明白为什么无论我使用哪个网站,它都不会打印任何内容。这是有意为之的行为吗?

文档:

https://godoc.org/golang.org/x/net/html#Node

https://github.com/golang/net/blob/master/html/node.go#L38

最佳答案

因为它是 HTML 树。上层是空的。例如,如果您需要解析 html 中的所有 url:

package main

import (
"fmt"
"log"
"net/http"

"golang.org/x/net/html"
)

func main() {
r, err := http.Get("https://google.com")
if err != nil {
log.Panicln(err)
}

defer func() {
err := r.Body.Close()
if err != nil {
fmt.Println(err)
}
}()

node, err := html.Parse(r.Body)
if err != nil {
log.Panicln(err)
}
fmt.Println(node.Data)

var f func(*html.Node)
f = func(n *html.Node) {
if n.Type == html.ElementNode && n.Data == "a" {
for _, a := range n.Attr {
if a.Key == "href" {
fmt.Println(a.Val)
break
}
}
}
for c := n.FirstChild; c != nil; c = c.NextSibling {
f(c)
}
}
f(node)
}

关于html - 为什么这个程序不打印任何东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42439248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com