TagSoupを使用してXMLSlurperに整形式構造体を渡すHTMLパーサーを作成しています。XmlSlurperの使い方:GPathResultの繰り返し処理中にサブ要素を選択する方法
ここでは一般的なコードです:
def htmlText = """
<html>
<body>
<div id="divId" class="divclass">
<h2>Heading 2</h2>
<ol>
<li><h3><a class="box" href="#href1">href1 link text</a> <span>extra stuff</span></h3><address>Here is the address<span>Telephone number: <strong>telephone</strong></span></address></li>
<li><h3><a class="box" href="#href2">href2 link text</a> <span>extra stuff</span></h3><address>Here is another address<span>Another telephone: <strong>0845 1111111</strong></span></address></li>
</ol>
</div>
</body>
</html>
"""
def html = new XmlSlurper(new org.ccil.cowan.tagsoup.Parser()).parseText(htmlText);
html.'**'.grep { [email protected] == 'divclass' }.ol.li.each { linkItem ->
def link = [email protected]
def address = linkItem.address.text()
println "$link: $address\n"
}
は、私は、各Iは、対応するHREFと住所の詳細を取得することができますので、私は順番に各「李」を選択させることを期待します。代わりに、私はこの出力を取得しています:
#href1#href2: Here is the addressTelephone number: telephoneHere is another addressAnother telephone: 0845 1111111
私は、ウェブ上のさまざまな例をチェックしましたし、これらは、いずれかのXMLを扱う、または「このファイルからのすべてのリンクを取得する」のようなワンライナーの例です。 it.h3.a. @ href式は親の 'li'ノードへの参照を渡していても、テキスト内のすべてのhrefを収集しているようです。
あなたは私が知っていることができます:
私は各「李」アイテム感謝のHREF /アドレスのペアを取得することができますどのよう
- 。
優秀な回答! –