目录

安装

加载页面

获得document对象

选择元素

Selection类型提供的方法


goquery github地址 https://github.com/PuerkitoBio/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 itemsdoc.Find(".sidebar-reviews article .content-block").Each(func(i int, s *goquery.Selection) {// For each item found, get the band and titleband := s.Find("a").Text()title := s.Find("i").Text()fmt.Printf("Review %d: %s - %s\n", i, band, title)})

要爬取的即是图中的内容

运行结果

Selection类型提供的方法

这些方法是页面解析最重要,最核心的方法

1)类似函数的位置操作

-  Eq(index int) *Selection     //根据索引获取某个节点集

-  First() *Selection          //获取第一个子节点集

-  Last() *Selection         //获取最后一个子节点集

-  Next() *Selection         //获取下一个兄弟节点集

-  NextAll() *Selection      //获取后面所有兄弟节点集

-  Prev() *Selection         //前一个兄弟节点集

- Get(index int) *html.Node  //根据索引获取一个节点

- Index() int                //返回选择对象中第一个元素的位置

- Slice(start, end int) *Selection  //根据起始位置获取子节点集

2)扩大 Selection 集合(增加选择的节点)

-  Add(selector string) *Selection //将匹配到的节点添加当前节点集合中

-   AndSelf() *Selection    //将堆栈上的前一组元素添加到当前的

-    Union() *Selection    //which is an alias for AddSelection()

3)过滤方法,减少节点集合

-  End() *Selection

- Filter…()     //过滤

- Has…()
    - Intersection()   //which is an alias of FilterSelection()
     - Not…()

4)循环遍历选择的节点

-  Each(f func(int, *Selection)) *Selection //遍历

- EachWithBreak(f func(int, *Selection) bool) *Selection  //可中断遍历

- Map(f func(int, *Selection) string) (result []string)  //返回字符串数组

5)修改文档

- After…()            //在匹配元素之后追加元素
      - Append…()         //将选择器指定的元素添加到匹配元素集合的每个元素的末尾
     - Before…()          //在匹配元素之前追加元素
    - Clone()             //创建匹配节点的副本
    - Empty()            //清空子节点
    - Prepend…()
    - Remove…()
    - ReplaceWith…()
    - Unwrap()
    - Wrap…()
    - WrapAll…()
    - WrapInner…()

6)检测或获取节点属性值

- Attr(), RemoveAttr(), SetAttr()  //获取,移除,设置属性的值
     - AddClass(), HasClass(), RemoveClass(), ToggleClass() 
     - Html()  //获取该节点的html
     - Length() //返回该Selection的元素个数
     - Size(), which is an alias for Length()
     - Text()  //获取该节点的文本值

7)查询或显示一个节点的身份

- Contains() //包含
      - Is…()

8)在文档树之间来回跳转(常用的查找节点方法)

- Children…()
      - Contents()
      - Find…()
      - Next…()
      - Parent[s]…()
      - Prev…()
      - Siblings…()

golang 网页解析 goquer包 简介相关推荐

  1. python 网页解析库 beautifulsoup4 简介

    HTML 文档本身是结构化的文本,有一定的规则,通过它的结构可以简化信息提取.于是,就有了lxml.pyquery.BeautifulSoup等网页信息提取库.一般我们会用这些库来提取网页信息.其中, ...

  2. golang 标准库strings包 简介

    Count // Count 计算字符串 sep 在 s 中的非重叠个数 // 如果 sep 为空字符串,则返回 s 中的字符(非字节)个数 + 1 // 使用 Rabin-Karp 算法实现 fun ...

  3. 【包】R语言rvest包简介

    以下翻译自:rvest包github项目主页 R语言rvest包简介 rvest包可以帮助我们从网页上抓取信息,它通常与magrittr包配合使用,便于进行常见的网络抓取任务.revest包的开发主要 ...

  4. java jsonobject的包_java_JSONObject与JSONArray的使用,1.JAR包简介要使程序可以运 - phpStudy...

    JSONObject与JSONArray的使用 1.JAR包简介 要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包: 1.commons-lang.jar 2.c ...

  5. r语言抓取网页数据_使用R进行网页抓取的简介

    r语言抓取网页数据 by Hiren Patel 希伦·帕特尔(Hiren Patel) 使用R进行网页抓取的简介 (An introduction to web scraping using R) ...

  6. python的网页解析器_Python网页解析器使用实例详解

    python 网页解析器 1.常见的python网页解析工具有:re正则匹配.python自带的html.parser模块.第三方库BeautifulSoup(重点学习)以及lxm库. 2.常见网页解 ...

  7. python的网页解析器_python 之网页解析器

    一.什么是网页解析器 1.网页解析器名词解释 首先让我们来了解下,什么是网页解析器,简单的说就是用来解析html网页的工具,准确的说:它是一个HTML网页信息提取工具,就是从html网页中解析提取出& ...

  8. Golang配置文件解析-oozgconf

    代码地址如下: http://www.demodashi.com/demo/14411.html 简介 oozgconf基于Golang开发,用于项目中配置文件的读取以及加载,是一个轻量级的配置文件工 ...

  9. python自带网页解析器_Python爬虫Chrome网页解析工具-XPath Helper

    之前就说过Python爬虫中Xpath的用法,相信每一个写爬虫.或者是做网页分析的人,都会因为在定位.获取XPath路径上花费大量的时间,在没有这些辅助工具的日子里,我们只能通过搜索HTML源代码,定 ...

最新文章

  1. P7581-「RdOI R2」路径权值【长链剖分,dp】
  2. 学习使用资源文件[2] - Ico
  3. python处理excel文件(xls和xlsx)
  4. Apollo自动驾驶入门课程第④讲 — 感知(上)
  5. lpv4的地址格式由多少个字节组成_我们为什么有这么多字符编码格式?
  6. 拓端tecdat|R语言极值分析:分块极大值Block-maxima、阈值超额法threshold excess、广义帕累托分布GPD拟合降水数据时间序列
  7. 创建dqn的深度神经网络_深度Q网络(DQN)-III
  8. 常微分方程机敏问答[3] #20210622
  9. 360全景地图 android,Android-谷歌VR展示360度全景图
  10. 实施定性风险分析-规划过程组
  11. 实例(C++解一元二次方程)
  12. phabricator代码提交自动触发Jenkins token发版(一)
  13. 以后你们就要给张一鸣还“花呗”了
  14. 小米11不再送充电头了吗?!
  15. AFPM100/B消防电源在南京基地模检具业务搬迁改造项目的应用
  16. error: conflicting declaration ‘typedef struct LZ4_stream_t LZ4_stream_t’
  17. 一个 Android 的视频编辑器,包括了视频录制、剪切、增加 bgm、美白、加滤镜、加水印等多种功能
  18. 基于javaSpringboot的装修验收管理系统设计和实现
  19. 【转】Java 专业词汇
  20. 混沌分形之谢尔宾斯基(Sierpinski)

热门文章

  1. 5G 在轨道运输网络中的需求
  2. VMware 虚拟化编程(15) — VMware 虚拟机的恢复方案设计
  3. Linux_NFS/Samba服务器
  4. Altium Designer铺铜时抠铜
  5. linux终端出现bash: setup.bash: No such file or directory,和.bashrc文件的问题
  6. 设计模式——外观模式
  7. 2015年国际智慧教育展览会盛大开幕
  8. 数字证书应用综合揭秘(包括证书生成、加密、解密、签名、验签)
  9. mysql集群的配置
  10. Kubuntu 9.10设置支持文件分级的方法