使用 goquery 查找值包含空格的 class
Use goquery to find a class whose value contains whitespace
已回答。用户 PuerkitoBio 帮助我解决了他的 goquery
包,我相信我不会是唯一想知道如何做到这一点的人。 (我可以在两天内把这个问题标记为'answered')
当使用 goquery
查找 html 标签的 classes 时,当 class 包含空格时我遇到了问题。这是一个例子:
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)
}
如果我想找到 class "text title"
,我想我会这样做:
doc.Find(".text title").Each(func(i int, s *goquery.Selection) {
class, _ := s.Attr("class")
fmt.Println(class, s.Text())
})
但这不起作用。 (答案在下面。)
我对HTML的理解有问题。 class="text title"
中的空格表示 class
有两个值:text
和 title
。为了找到 class 和 goquery
的多个属性,我需要将它们并排放置(没有空格)并在它们前面加上 .
。像这样:
doc.Find(".text.title").Each(func(i int, s *goquery.Selection) {
class, _ := s.Attr("class")
fmt.Println(class, s.Text())
})
或者,如果我想 仅 具有值 title
的 class,我会这样做:
doc.Find(".title").Each(func(i int, s *goquery.Selection) {
class, _ := s.Attr("class")
fmt.Println(class, s.Text())
})
已回答。用户 PuerkitoBio 帮助我解决了他的 goquery
包,我相信我不会是唯一想知道如何做到这一点的人。 (我可以在两天内把这个问题标记为'answered')
当使用 goquery
查找 html 标签的 classes 时,当 class 包含空格时我遇到了问题。这是一个例子:
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)
}
如果我想找到 class "text title"
,我想我会这样做:
doc.Find(".text title").Each(func(i int, s *goquery.Selection) {
class, _ := s.Attr("class")
fmt.Println(class, s.Text())
})
但这不起作用。 (答案在下面。)
我对HTML的理解有问题。 class="text title"
中的空格表示 class
有两个值:text
和 title
。为了找到 class 和 goquery
的多个属性,我需要将它们并排放置(没有空格)并在它们前面加上 .
。像这样:
doc.Find(".text.title").Each(func(i int, s *goquery.Selection) {
class, _ := s.Attr("class")
fmt.Println(class, s.Text())
})
或者,如果我想 仅 具有值 title
的 class,我会这样做:
doc.Find(".title").Each(func(i int, s *goquery.Selection) {
class, _ := s.Attr("class")
fmt.Println(class, s.Text())
})