使用Groovy和XmlSluper在html中搜索数据

使用Groovy和XmlSluper在html中搜索数据,html,parsing,url,groovy,Html,Parsing,Url,Groovy,我想解析一个URL,找到一个特定的标记并读取它的文本,因此出于测试目的,我下载了页面并做了我想做的事情,一切正常,但当我尝试使用URL而不是文件时。什么都没有发生,所以问题出在哪里 String newsPage= "http://www.dnes.bg/sport/2014/01/01/chelsi-s-pyrvi-transfer-za-novata-godina.211048" def page = new XmlSlurper(new org.cyberneko.html.parsers

我想解析一个URL,找到一个特定的标记并读取它的文本,因此出于测试目的,我下载了页面并做了我想做的事情,一切正常,但当我尝试使用URL而不是文件时。什么都没有发生,所以问题出在哪里

String newsPage= "http://www.dnes.bg/sport/2014/01/01/chelsi-s-pyrvi-transfer-za-novata-godina.211048"
def page = new XmlSlurper(new org.cyberneko.html.parsers.SAXParser()).parse(newsPage)
        def articleNode = page.'**'.grep{it.name().equals("DIV")&&it.@class.toString().equals("article-text")
            println it.name()
            println it.@id
            println it.@class
            println it.text()
        }
最后一次打印用于测试目的,我发现并不是所有标签的名称都打印出来。因此,没有打印搜索到的标签文章文本,因为找不到它。我不明白为什么有些标签的名字是打印出来的,而其他的没有。标记名称的部分输出为:

HTML
HEAD
META
TITLE
META
META
META
META
META
META
LINK
...
标题标签后有链接标签,但其名称不在列表中。

奇数…适合我

我把它改成:

def articleNode = page.'**'.find { it.name() == "DIV" && 
                                   it.@class == "article-text" }
println articleNode.text()

而且它似乎也能起作用……

尝试过,现在也能起作用。奇怪。。还有一个问题?如果我们不知道给定元素的所有属性的名称,有没有一种方法可以用XmlSluber显示它们的所有属性。再次感谢。我这样问是因为在html中,img标记有src、alt、title属性,但现在当我用attributes()打印img的属性时,只显示src和alt,alt为空。我想知道为什么。这是CyberNeko对html的更改吗?