2016-05-08 5 views
1

私はHTMLページを解析してテーブル値を取得したいと思います。たとえば、辞書を解析して辞書のリストを取得します。各リスト要素は、表の行に対応する辞書になります。HTMLテーブルをGroovyリストに解析しますか?

のテーブルがあるとしましょう:

テーブル

<table style="width:100%"> 
    <tr> 
    <td>Jill</td> 
    <td>Smith</td>  
    <td>50</td> 
    </tr> 
    <tr> 
    <td>Eve</td> 
    <td>Jackson</td>   
    <td>94</td> 
    </tr> 
</table> 

結果

[Jill, Smith, 50] 
[Eve, Jackson, 94] 

私は二つの方法でこれを実現しています:

    このようにクロージャを使用して

    page.body.div.table.tr.time; 
    
  1. ::XPathを使用し

  2. page."**".findAll { [email protected]().contains("time")}.each { 
    

どちらの方法がXMLSlurperを使用します。

@Grab(group='org.ccil.cowan.tagsoup', module='tagsoup', version='1.2') 
def parser = new XmlSlurper(new org.ccil.cowan.tagsoup.Parser()) 

だから、テーブル値を得るための別の方法がありますGroovyを使用して

助けてくれてありがとう!

+2

上記の方法のいずれかに問題があり、そのために第3のアプローチが必要ですか? – dmahapatro

+1

あなたの例のhtmlにある何かが "time"のクラスを持つべきか –

+0

1)最初のアプローチの主な関心事は、ハードコーディングされた解決策です。アジャイルではありません。構造が変更された場合、予期しない結果が返される可能性があります。 2番目のアプローチは、私が今すぐそれをやり遂げるのに好ましい方法です。ここでの唯一の問題は、計算コストと場合によっては正規表現の必要性です。私は一般的な解決策を探していた:http://stackoverflow.com/questions/6325216/parse-html-table-to-python-list – Vanko

答えて

1

jsoup HTMLパーサーを使用して良い結果が得られました。これはJavaライブラリですが、Groovyでうまく動作します。 parsing a table in Javaの例があり、Groovyとjsoupを使用して削り取るときの参考文献blog entryがあります。このquestionには、テーブルを解析する際の格好の例の答えがあります。

+0

これは私が見つけた実例です:http:// stackoverflow .com/questions/5396098/how-to-parse-a-table-from-html-using-jsoup。同様にグルーヴィーバージョンもあります。ありがとうございました。 – Vanko

関連する問題