解析html页面并使用golang中的css选择器获取值

时间:2015-01-17 11:00:44

标签: go

我想解析HTML.Eg的特定div的值。我有像" funcname" 这样的类,所以我可以在golang中解析这个div的值吗?

2 个答案:

答案 0 :(得分:9)

您可以使用the github.com/PuerkitoBio/goquery package。如果您熟悉jQuery选择器,那么对您来说不会有问题。

doc, err := goquery.NewDocument(contents)
// handle err
doc.Find(".funcname")

答案 1 :(得分:0)

如果你不介意更简单的事情,我写了我自己的模块来做 这。这个可以满足您的要求:

package main

import (
   "github.com/89z/mech"
   "strings"
)

const source = `
<!DOCTYPE html>
<html>
   <body>
      <header>
         <div class="funcname">One</div>
         <div class="funcname">Two</div>
      </header>
   </body>
</html>
`

func main() {
   r := strings.NewReader(source)
   doc, err := mech.Parse(r)
   if err != nil {
      panic(err)
   }
   div := doc.ByAttr("class", "funcname")
   div.Scan()
   println(div.Text()) // One
}

其他示例:

div := doc.ByAttr("class", "funcname")
for div.Scan() {
   println(div.Text()) // One, Two
}
div := doc.ByTag("div")
div.Scan()
println(div.Text()) // One
div := doc.ByTag("div")
for div.Scan() {
   println(div.Text()) // One, Two
}
class := div.Attr("class")
println(class) // funcname

https://pkg.go.dev/github.com/89z/mech