goquery过滤掉某一段html,golang goquery selector(选择器) 示例大全

本文为原创文章,转载注明出处,欢迎扫码关注公众号flysnow_org或者网站http://www.flysnow.org/,第一时间看后续精彩文章。觉得好的话,顺手分享到朋友圈吧,感谢支持。

最近研究Go爬虫相关的知识,使用到goquery这个库比较多,尤其是对爬取到的HTML进行选择和查找匹配的内容时,goquery的选择器使用尤其多,而且还有很多不常用但又很有用的选择器,这里总结下,以供参考。

如果大家以前做过前端开发,对jquery不会陌生,goquery类似jquery,它是jquery的go版本实现。使用它,可以很方便的对HTML进行处理。

基于HTML Element 元素的选择器

这个比较简单,就是基于a,p等这些HTML的基本元素进行选择,这种直接使用Element名称作为选择器即可。比如dom.Find("div")。

12345678910111213141516171819

func main() {

html := `

DIV1
DIV2
SPAN`

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())

})

}

以上示例,可以把div元素筛选出来,而body,span并不会被筛选。

ID 选择器

这个是使用频次最多的,类似于上面的例子,有两个div元素,其实我们只需要其中的一个,那么我们只需要给这个标记一个唯一的id即可,这样我们就可以使用id选择器,精确定位了。

12345678910111213141516171819

func main() {

html := `

DIV1
DIV2
SPAN`

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())

})

}

Element ID 选择器

id选择器以#开头,紧跟着元素id的值,使用语法为dom.Find(#id),后面的例子我会简写为Find(#id),大家知道这是代表goquery选择器的即可。

如果有相同的ID,但是它们又分别属于不同的HTML元素怎么办?有好办法,和Element结合起来。比如我们筛选元素为div,并且id是div1的元素,就可以使用Find(div#div1)这样的筛选器进行筛选。

所以这类筛选器的语法为Find(element#id),这是常用的组合方法,比如后面讲的过滤器也可以采用这种方式组合使用。

Class选择器

class也是HTML中常用的属性,我们可以通过class选择器来快速的筛选需要的HTML元素,它的用法和ID选择器类似,为Find(".class")。

12345678910111213141516171819

func main() {

html := `

DIV1
DIV2
SPAN`

dom,err:=goquery.NewDocumentFromReader(strings.NewReader(html))

if err!=nil{

log.Fatalln(err)

}

dom.Find(".name").Each(func(i int, selection *goquery.Selection) {

fmt.Prin

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值