go语言爬虫教程python_go语言解析网页利器goquery使用教程(爬虫必备)

某些时候需要爬取网页中指定信息时,通常需要一些框架解析网页行成dom模型,然后来操作节点来获取相应的信息。在java中很显然就是Jsoup,而在Golang里,应该就是这个goquery了吧。

安装

由于它依赖 Go语言的 net/html 包以及css选择库 cascadia, 因此我们要先手动安装net/html包,后者不需要我们手动安装。 运行

go get https://github.com/PuerkitoBio/goquery

之后可能会出现golang.org\x失败相关的,那里是由于被墙了导致(好像又不是o_o ....),那里自己百度下吧,具体错误我当时也没记录( ̄、 ̄)

然后应该就可以使用goquery包了

使用

语法相关这里就不过分说明,直接上用法吧(●'◡'●)

首先导入该包

import "github.com/PuerkitoBio/goquery"

加载页面

就用官方的例子吧,我比较懒😁

// 请求html页面

res, err := http.Get("http://metalsucks.net")

if err != nil {

// 错误处理

log.Fatal(err)

}

defer res.Body.Close()

if res.StatusCode != 200 {

log.Fatalf("status code error: %d %s", res.StatusCode, res.Status)

}

获得document对象

有多种获得document对象的方法,这里是比较常见的一种

// 加载 HTML document对象

doc, err := goquery.NewDocumentFromReader(res.Body)

if err != nil {

log.Fatal(err)

}

选择元素

选择器语法就是css选择器语法,和jsoup中的类似

// Find the review items

doc.Find(".sidebar-reviews article .content-block").Each(func(i int, s *goquery.Selection) {

// For each item found, get the band and title

band := s.Find("a").Text()

title := s.Find("i").Text()

fmt.Printf("Review %d: %s - %s\n", i, band, title)

})

要爬取的即是图中的内容

fa5e744f69ddbaadc101afaa5c8febeb.png

运行结果

c6684bf2ad99184af2fbec4ac73648db.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值