blob: 442282650b35af0ce9c4784dbae9b28e7a07afd4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
package links
import (
"io"
"golang.org/x/net/html"
"golang.org/x/net/html/atom"
)
func parse(htmlInput io.Reader) ([]string, error) {
doc, err := html.Parse(htmlInput)
if err != nil {
return nil, err
}
hrefs := findHrefs(doc)
return hrefs, nil
}
// findHrefs returns all link addresses inside doc.
func findHrefs(doc *html.Node) []string {
var hrefs []string
for node := range doc.Descendants() {
if node.Type == html.ElementNode && node.DataAtom == atom.A {
for _, attr := range node.Attr {
if attr.Key == "href" {
hrefs = append(hrefs, attr.Val)
}
}
}
}
return hrefs
}
|