繁体   English   中英

golang html.Node.Data 容器无人类字符

[英]golang html.Node.Data container no human characters

我从 go 编程语言书中复制了以下代码,但我的 output 与书中的代码不同,代码如下:

import (
    "fmt"
    "os"
    "golang.org/x/net/html"
)


func main() {
    doc , err := html.Parse(os.Stdin)
    if err != nil {
        fmt.Fprintf(os.Stderr, "findlinks1: %v\n", err)
        os.Exit(1)
    }

    for _ , link := range visit([]string{} ,doc)  {
        fmt.Println(link);
    }

    

}

func visit(links []string , n *html.Node) []string {
    

        if n.Type == html.ElementNode && n.Data == "a"{
            for _,a := range n.Attr {
                if a.Key == "href" {
                    links = append(links , a.Val)
                }
            }
        }

        for c := n.FirstChild ; c != nil ; c = c.NextSibling {
                visit(links,c)
        }
    return links 
}

the data obtained from stdin is in fact the output of another prog that brings the html of a web page the image below shows its output: 在此处输入图像描述 我在访问开始时添加了一个 printf 以查看发生了什么,但我发现 n.Data 不包含标签名称,而是包含一个不可读字符的分支任何帮助???

该程序不起作用,因为在 function 访问期间复制了 links 变量确实,这个新副本指向相同的底层数组,但分配给它的任何更改都不会影响原始所以在行

visit(links,c) must be links = visit(links,c)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM