This is assuming #61405 is accepted. Iterating through all the children of an html.Node is tedious. The current code has [this example](https://pkg.go.dev/golang.org/x/net/html#example-Parse) of a recursive function printing out links: ```go 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(doc) ``` It would be much nicer with an iterator: ```go for n := range doc.All() { if n.Type == html.ElementNode && n.Data == "a" { for _, a := range n.Attr { if a.Key == "href" { fmt.Println(a.Val) break } } } } ```