gpt4 book ai didi

java - Groovy 中的 Html 吞吐

转载 作者:行者123 更新时间:2023-12-01 09:17:35 29 4
gpt4 key购买 nike

我正在尝试解析作为一个巨大字符串出现的 HTML。当我到达第 13 行时,NodeChild page = it.parent()

我能够找到我正在寻找的 key ,但数据就像这是我的 key 中的值一这是我的 key 中的值二这是我的 key 中的值三和很快。我看到一个反复出现的趋势,两者之间的分隔符始终是大写大写(没有空格)。

我想以某种方式将其放入 ArrayList 中。有没有我缺少的方法 from the docs那能自动做到这一点吗?有没有更好的方法来解析它?

class htmlParsingStuff{

private def slurper = new XmlSlurper(new Parser())

private void slurpItUp(String rawHTMLString){
ArrayList urlList = []
def htmlParser = slurper.parseText(rawHTMLString)

htmlParser.depthFirst().findAll() {
//Loop through all of the HTML Tags to get to the key that I am looking for
//EDIT: I see that I am able to iterate through the parent object, I just need a way to figure out how to get into that object
boolean trigger = it.text() == 'someKey'
if (trigger){
//I found the key that I am looking for
NodeChild page = it.parent()
page = page.replace('someKey', '')
LazyMap row = ["page": page, "type": "Some Type"]
urlList.add(row)
}
}
}
}

最佳答案

我无法为您提供工作代码,因为我不知道您的具体 html。

但是:不要使用 XmlSlurper 解析 HTML,HTML 的格式不正确,因此 XmlSlurper 不是适合该工作的工具。

对于 HTML,请使用类似 JSoup 的库。您会发现它更容易使用,特别是如果您有一些 JQuery 知识。由于您没有发布 HTML 片段,所以我编写了自己的示例:

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

def html = """
<html>
<body>
<table>
<tr><td>Key 1</td></tr>
<tr><td>Key 2</td></tr>
<tr><td>Key 3</td></tr>
<tr><td>Key 4</td></tr>
<tr><td>Key 5</td></tr>
</table>
</body>
</html>"""

def doc = Jsoup.parse(html)
def elements = doc.select('td')
def result = elements.collect {it.text()}
// contains ['Key 1', 'Key 2', 'Key 3', 'Key 4', 'Key 5']

操作您将使用的文档

def doc = Jsoup.parse(html)
def elements = doc.select('td')
elements.each { oldElement ->
def newElement = new Element(Tag.valueOf('td'), '')
newElement.text('Another key')
oldElement.replaceWith(newElement)
}
println doc.outerHtml()

关于java - Groovy 中的 Html 吞吐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40433443/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com