Beispiel #1
0
func ExampleParse() {
	s := `<p>Links:</p><ul><li><a href="foo">Foo</a><li><a href="/bar/baz">BarBaz</a></ul>`
	doc, err := html.Parse(strings.NewReader(s))
	if err != nil {
		log.Fatal(err)
	}
	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)
	// Output:
	// foo
	// /bar/baz
}
Beispiel #2
0
// Parse the html while handling the charset
func ParseHTML(r io.Reader, cs string) (*html.Node, error) {
	var err error
	if cs == "" {
		// attempt to guess the charset of the HTML document
		r, err = charset.NewReader(r, "")
		if err != nil {
			return nil, err
		}
	} else {
		// let the user specify the charset
		e, name := charset.Lookup(cs)
		if name == "" {
			return nil, fmt.Errorf("'%s' is not a valid charset", cs)
		}
		r = transform.NewReader(r, e.NewDecoder())
	}
	return html.Parse(r)
}