【问题标题】:Use goquery to find a class whose value contains whitespace使用 goquery 查找值包含空格的类
【发布时间】:2015-01-14 00:15:29
【问题描述】:

已回答。用户PuerkitoBio 帮助我完成了他的goquery 包,我相信我不会是唯一一个想知道如何做到这一点的人。 (我可以在两天内将此问题标记为“已回答”)

当使用goquery 查找 html 标签的类时,当类包含空格时我遇到了问题。这是一个例子:

package main

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

func main() {
    html_code := strings.NewReader(`
<html>
    <body>
        <h1>
            <span class="text title">Go </span>
        </h1>
        <p>
            <span class="text">totally </span>
            <span class="post">kicks </span>
        </p>
        <p>
            <span class="text">hacks </span>
        </p>
    </body>
<html>
    `)
    doc, _ := goquery.NewDocumentFromReader(html_code)
}

如果我想找到班级"text title",我想我会这样做:

doc.Find(".text title").Each(func(i int, s *goquery.Selection) {
    class, _ := s.Attr("class")
    fmt.Println(class, s.Text())
})

但这不起作用。 (答案如下。)

【问题讨论】:

  • 糟糕。感谢您的提醒!

标签: go html-parsing goquery


【解决方案1】:

这是我对 HTML 理解的问题。 class="text title" 中的空格表示class 有两个值:texttitle。为了找到具有goquery 的类的多个属性,我需要将它们并排放置(不带空格)并在它们前面加上.。像这样:

doc.Find(".text.title").Each(func(i int, s *goquery.Selection) {
    class, _ := s.Attr("class")
    fmt.Println(class, s.Text())
})

或者,如果我想找到值为 title 的类,我会这样做:

doc.Find(".title").Each(func(i int, s *goquery.Selection) {
    class, _ := s.Attr("class")
    fmt.Println(class, s.Text())
})

【讨论】:

    猜你喜欢
    • 2022-12-22
    • 2019-05-29
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多