无法使用 Groovy / Grails 完全解析 HTML 页面

问题描述 投票:0回答:1

我正在尝试解析 HTML 页面并生成一个对象,该对象与我使用浏览器 Web 开发人员工具检查 HTML 时所看到的等效。 (Firefox 或 Chrome)。

网页包含一些URL,它们是下载链接,但我想整理页面上所有下载链接的列表。我尝试了多种方法来实现此目的,但每种方法仅提供仅包含部分信息的对象。到目前为止,我做得最好的就是使用 Tagsoup。

    def tagsoupParser = new org.ccil.cowan.tagsoup.Parser()
    def slurper = new XmlSlurper(tagsoupParser)
    def htmlParser = slurper.parse("https://www.2n.com/en_US/support/documents/firmware#filter-category-intercoms")

    htmlParser.'**'.findAll{it}.each {
        new File("myFile.txt") << XmlUtil.serialize( it )
    }

这在一定程度上有效,但令人烦恼的是,HTML 在网页中的 URL 所在部分之前停止,并且我没有获得完整的 HTML。如果您在浏览器中使用 Web 开发人员工具,并将检查视图与 myFile.txt 中的内容进行比较,它的比较结果非常好,直到文件中的 HTML 停止,我错过了整个 HTML 块。 (我需要的部分!)。

我也尝试了这段代码,它给出了类似的结果:-

    def parser = new org.cyberneko.html.parsers.SAXParser()
    new XmlParser( parser ).parse( 'https://www.2n.com/en_US/support/documents/firmware#filter-category-intercoms' ).with { page ->
        page.'**'.DIV.grep {it}.each { it ->
            new File("myFile.txt") << XmlUtil.serialize( it )
            
        }
    }

所以这也不起作用。我也尝试了其他一些方法,但没有一个能给出我想要的,而且它们都达不到我上面详细介绍的两种。

网页中嵌入的是这一行,我需要提取这样的行(以及其他类似的行):-

    <a target="_blank" href="/en_US/documents/22902/461984/Firmware+2.42.0++-+2N+IP+Verso%2C+Solo%2C+LTE+Verso" class="p2n-btn p2n-btn-inverse p2n-btn-download p2n-bottom-info-link p2n-btn-fs-mini p2n" title="Download file"> </a>

我正在使用 Grails 2.5.6 / Groovy,但如果可以的话我很乐意使用本机 Java。

java html groovy grails
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.