2

我想使用 goquery 获取 DOM 的类型名称,例如“a”、“img”、“tr”、“td”、“center”。我怎样才能得到?

package main

import (
    "github.com/PuerkitoBio/goquery"
)

func main() {
    doc, _ := goquery.NewDocument("https://news.ycombinator.com/")
    doc.Find("html body").Each(func(_ int, s *goquery.Selection) {
        // for debug.
        println(s.Size()) // return 1

        // I expect '<center>' on this URL, but I can't get it's name.
        // println(s.First().xxx) // ?
    })
}
4

1 回答 1

5

*Selection.First给你另一个*Selection,其中包含一个切片,*html.Node其中包含一个Data字段:

元素节点的标签名称,文本的内容

所以是这样的:

package main

import (
    "github.com/PuerkitoBio/goquery"
    "golang.org/x/net/html"
)

func main() {
    doc, _ := goquery.NewDocument("https://news.ycombinator.com/")
    doc.Find("html body").Each(func(_ int, s *goquery.Selection) {
        // for debug.
        println(s.Size()) // return 1

        if len(s.Nodes) > 0 && s.Nodes[0].Type == html.ElementNode {
            println(s.Nodes[0].Data)
        }
    })
}
于 2015-10-17T06:31:26.897 回答