首页 > 解决方案 > Golang - 使用 PuerkitoBio/goquery 分别为每个子元素查找文本

问题描述

我是 Golang 的新手,刚刚开始学习它。我想从网站上查找一些信息并提取我需要的数据。我正在使用PuerkitoBio/goquery 包来选择元素并从中读取。我想从这段 html 中提取数据:

<ul class="cases-counter">
  <li>Cases: <strong>457</strong><br></li>
  <li>Active: <strong>16</strong><br></li>
</ul>

这是我拥有的代码:

doc.Find(".cases-counter").Each(func(i int, s *goquery.Selection) {
    text := s.Find("li").Text()
    fmt.Print(i)
    fmt.Printf(text)
})

这打印了我:

0Cases: 457Active: 16

在此示例中,如何将每个li element的文本分别打印为两个不同的变量?

标签: gogoquery

解决方案


你可以试试这个。

func ExampleNewDocumentFromReader_string() {

    data := `
<html>
    <ul class="cases-counter">
  <li id="Cases">Cases: <strong>457</strong><br></li>
  <li id="Active">Active: <strong>16</strong><br></li>
</ul>
</html>`

    doc, err := goquery.NewDocumentFromReader(strings.NewReader(data))
    if err != nil {
        log.Fatal(err)
    }

    doc.Find(".cases-counter").Each(func(i int, s *goquery.Selection) {

        Cases := s.Find("#Cases").Text()
        Active := s.Find("#Active").Text()
        fmt.Printf("Review %d: %s, %s\n", i, Cases, Active)
    })

}
func main() {
    ExampleNewDocumentFromReader_string()
}

推荐阅读