Gre*_*n23 3 go html-parsing goquery
回答.用户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)
}
Run Code Online (Sandbox Code Playgroud)
如果我想找到班级"text title",我想我会这样做:
doc.Find(".text title").Each(func(i int, s *goquery.Selection) {
class, _ := s.Attr("class")
fmt.Println(class, s.Text())
})
Run Code Online (Sandbox Code Playgroud)
但这不起作用.(答案如下.)
这是我对HTML的理解的一个问题.里面的空白class="text title"显示class有两个值:text和title.为了找到一个类的多个属性goquery,我需要将它们并排放置(没有空格)并用它们作为前缀..像这样:
doc.Find(".text.title").Each(func(i int, s *goquery.Selection) {
class, _ := s.Attr("class")
fmt.Println(class, s.Text())
})
Run Code Online (Sandbox Code Playgroud)
或者,如果我曾经想找到只用值类title,我这样做:
doc.Find(".title").Each(func(i int, s *goquery.Selection) {
class, _ := s.Attr("class")
fmt.Println(class, s.Text())
})
Run Code Online (Sandbox Code Playgroud)