goquery數據選擇
===
### Element 選擇器
~~~go
func main() {
html := `<body>
<div>DIV1</div>
<div>DIV2</div>
<span>SPAN</span>
</body>
`
dom,err:=goquery.NewDocumentFromReader(strings.NewReader(html))
if err!=nil{
log.Fatalln(err)
}
dom.Find("div").Each(func(i int, selection *goquery.Selection) {
fmt.Println(selection.Text())
})
}
~~~
### ID 選擇器
~~~go
func main() {
html := `<body>
<div id="div1">DIV1</div>
<div>DIV2</div>
<span>SPAN</span>
</body>
`
dom,err:=goquery.NewDocumentFromReader(strings.NewReader(html))
if err!=nil{
log.Fatalln(err)
}
dom.Find("#div1").Each(func(i int, selection *goquery.Selection) {
fmt.Println(selection.Text())
})
}
~~~
## Class選擇器
~~~go
func main() {
html := `<body>
<div id="div1">DIV1</div>
<div class="name">DIV2</div>
<span>SPAN</span>
</body>
`
dom,err:=goquery.NewDocumentFromReader(strings.NewReader(html))
if err!=nil{
log.Fatalln(err)
}
dom.Find(".name").Each(func(i int, selection *goquery.Selection) {
fmt.Println(selection.Text())
})
}
~~~
## 屬性選擇器
~~~go
func main() {
html := `<body>
<div>DIV1</div>
<div class="name">DIV2</div>
<span>SPAN</span>
</body>
`
dom,err:=goquery.NewDocumentFromReader(strings.NewReader(html))
if err!=nil{
log.Fatalln(err)
}
dom.Find("div[class]").Each(func(i int, selection *goquery.Selection) {
fmt.Println(selection.Text())
})
}
~~~
| 選擇器 | 說明 |
| --- | --- |
| Find(“div\[lang\]“) | 篩選含有lang屬性的div元素 |
| Find(“div\[lang=zh\]“) | 篩選lang屬性為zh的div元素 |
| Find(“div\[lang!=zh\]“) | 篩選lang屬性不等于zh的div元素 |
| Find(“div\[lang|=zh\]“) | 篩選lang屬性為zh或者zh-開頭的div元素 |
| Find(“div\[lang\*=zh\]“) | 篩選lang屬性包含zh這個字符串的div元素 |
| Find(“div\[lang~=zh\]“) | 篩選lang屬性包含zh這個單詞的div元素,單詞以空格分開的 |
| Find(“div\[lang$=zh\]“) | 篩選lang屬性以zh結尾的div元素,區分大小寫 |
| Find(“div\[lang^=zh\]“) | 篩選lang屬性以zh開頭的div元素,區分大小寫 |