当前位置: 首页 > 工具软件 > Groovy PDF > 使用案例 >

groovy 读取html文件,「Groovy」- 操作 HTML 文档 @20210307

甄伟兆
2023-12-01

问题描述

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

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

解决方案

方案一、使用 Jsoup 类库

方案二、使用 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

import org.jsoup.nodes.* // Element

import org.jsoup.select.* // Elements

def htmlString = "

Title of Page>"

def htmlDocument = Jsoup.parse(htmlString)

// 找到 title 元素

println htmlDocument.getElementsByTag("title").text()

// 找到 heading 元素

Elements hTags = htmlDocument.select("h1, h2, h3, h4, h5, h6");

// 找到 a 标签

Element link = doc.select("a").first()

String linkHref = link.attr("href") // 获取 href 属性

String linkOuterH = link.outerHtml() // 获取整个标签的 HTML 代码

String linkInnerH = link.html() // 获取标签内部的元素

注意事项

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

相关文章

参考文献

 类似资料: