博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
go语言解析网页利器goquery使用教程(爬虫必备)
阅读量:6700 次
发布时间:2019-06-25

本文共 1209 字,大约阅读时间需要 4 分钟。

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

goquery github地址

安装

由于它依赖 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)  })

要爬取的即是图中的内容

1470456-20181223113809631-253200336.png

运行结果

1470456-20181223114020632-2063119296.png

转载于:https://www.cnblogs.com/asche/p/10163753.html

你可能感兴趣的文章
LoadRunner使用之变量参数化
查看>>
asp.net运行原理
查看>>
canvas实现芝麻信用评分效果
查看>>
053(五十三)
查看>>
【Spark篇】---Spark中yarn模式两种提交任务方式
查看>>
最短路专题解题报告
查看>>
什么是FSO
查看>>
Python 3
查看>>
Centos硬件信息
查看>>
如何在一个Activity里使用另一个xml布局文件
查看>>
饼图图例中显示百分比值
查看>>
forward和redirect
查看>>
打开hibernate文件报警告
查看>>
linux安装IDEA 2017
查看>>
Intellij IDEA 去掉Mapper文件中的背景
查看>>
Docker 安装 mysql
查看>>
阅读笔记《全景探秘游戏设计艺术》
查看>>
C# Json格式字符串
查看>>
sign-up 签约注册
查看>>
基于RDD实现简单的WordCount程序
查看>>