「Groovy」- 操作 HTML 文档 @20210209

问题描述

Jenkins Pipeline 中,我们需要对 HTML 文档进行多种操作。之前使用 XMLParser 及 XMLSlurper 库操作 HTML 文档时遇到很多问题,因为 HTML 文档结构松散(比如没有结束标签等等),不是标准的 XML 文件,因此导致 XML 解析失败。

该笔记将整理:在 Groovy 中,操作 HTML 文档的常用方法

解决方案

方案一、使用 Jsoup 类库

项目主页:jsoup Java HTML Parser, with the best of HTML5 DOM methods and CSS selectors.
获取文档的 DOM 对象:Parsing and traversing a Document: jsoup Java HTML parser
使用选择器选择元素:Use selector-syntax to find elements: jsoup Java HTML parser
元素的查找、获取、操作:Use DOM methods to navigate a document: jsoup Java HTML parser

方案二、使用 TagSoup 类库

我们未验证该方法,只是阅读 Grape 手册时发现该方法,这里仅简单记录:

// find the PDF links of the Java specifications
@Grab(group='org.ccil.cowan.tagsoup', module='tagsoup', version='1.2.1')
def getHtml() {
    def parser = new XmlParser(new org.ccil.cowan.tagsoup.Parser())
    parser.parse("https://docs.oracle.com/javase/specs/")
}
html.body.'**'.a.@href.grep(~/.*\.pdf/).each{ println it }

方案一、使用 Jsoup 类库

简单的入门示例

@Grab(group='org.jsoup', module='jsoup', version='1.10.1')
import org.jsoup.Jsoup

def htmlString = "<html><head><title>Title of Page</title></></head></html>"
def htmlDocument = Jsoup.parse(htmlString)
println htmlDocument.getElementsByTag("title").text()

注意事项

如果可能,尽量不要使用任何 XML 类库操作 HTML 文本。

相关文章

「Groovy」- 处理路径地址
「Groovy」- 处理 Object 与 JSON String 之间的转换
「Apache Groovy」- 正则表达式
「Groovy」- 操作文件(读取、写入)
「Groovy」- 连接数据库(使用 MySQL 演示)
「Apache Groovy」- 连接 SQLite 数据库
「Apache Groovy」- 运行 Shell 命令
「Apache Groovy」- Grape,依赖管理工具(学习笔记)

参考文献

Html Slurping in Groovy
Use DOM methods to navigate a document


posted @ 2021-02-09 20:05  研究林纳斯写的  阅读(231)  评论(0编辑  收藏  举报