java - Groovy 中的 Html 吞吐

标签 java groovy web-scraping

我正在尝试解析作为一个巨大字符串出现的 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/

相关文章:

Java:如何检索数组列表中的特定类型?

java - 在 weka java API 上评估新数据时出错

sorting - Groovy自定义排序

Grails 防止重复插入

html - 如何使用 VBA 从 Chrome 的下拉列表中选择一个选项?

node.js - 在 Node.js 中进行嵌套请求调用

python - Xpath:如何获取 <p> 标签内 <a> 标签的文本

java - 在不修改原始源代码的情况下扩展访客模式?

grails - Grails executeQuery子查询

java - Hibernate 是否用于重型 ERP 解决方案