我需要解析格式错误的 HTML 页面并从中提取某些 URL 作为任何类型的集合。我真的不在乎什么样的集合,我只需要能够迭代它。
假设我们有这样的结构:
<html>
<body>
<div class="outer">
<div class="inner">
<a href="http://www.google.com" title="Google">Google-Link</a>
<a href="http://www.useless.com" title="I don't need this">Blah blah</a>
</div>
<div class="inner">
<a href="http://www.youtube.com" title="Youtube">Youtube-Link</a>
<a href="http://www.useless2.com" title="I don't need this2">Blah blah2</a>
</div>
</div>
</body>
</html>
这是我到目前为止所做的:
// tagsoup version 1.2 is under apache license 2.0
@Grab(group='org.ccil.cowan.tagsoup', module='tagsoup', version='1.2' )
XmlSlurper slurper = new XmlSlurper(new org.ccil.cowan.tagsoup.Parser());
GPathResult nodes = slurper.parse("test.html");
def links = nodes."**".findAll { it.@class == "inner" }
println links
我想要类似的东西
["http://google.com", "http://youtube.com"]
但我得到的是:
["Google-LinkBlah blah", "Youtube-LinkBlah blah2"]
更准确地说,我不能使用所有 URL,因为我需要解析的 HTML 文档大约有 15000 行长,并且有很多我不需要的 URL。所以我需要每个“内部”块中的第一个URL。