英文:
How can I get the type name of DOM using goquery?
问题
我想使用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) {
// 调试用
println(s.Size()) // 返回1
// 我期望在这个URL上找到'<center>',但是我无法获取它的名称。
// println(s.First().xxx) // ?
})
}
英文:
I want to get the type name of DOM like 'a', img', 'tr', 'td', 'center' using goquery.
How can I get?
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) // ?
})
}
答案1
得分: 5
*Selection.First
给出了另一个包含 *html.Node
切片的 *Selection
,其中 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()) // 返回 1
if len(s.Nodes) > 0 && s.Nodes[0].Type == html.ElementNode {
println(s.Nodes[0].Data)
}
})
}
英文:
*Selection.First
gives you another *Selection
which contains a slice of *html.Node
which has a Data
field which contains:
> tag name for element nodes, content for text
So something like that:
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)
}
})
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论