2016-05-08 13 views
1

Ich möchte eine HTML-Seite analysieren und die Tabellenwerte abrufen. Zum Beispiel Parsing durch, um eine Liste von Wörterbüchern zu erhalten. Jedes Listenelement wäre ein Wörterbuch, das einer Zeile in der Tabelle entspricht.HTML-Tabelle zu Groovy-Liste analysieren?

Lassen Sie uns sagen, dass die Tabelle ist:

Tisch

<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> 

Ergebnis

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

ich dies zu erreichen, die von zwei Möglichkeiten:

  1. mit XPath:

    page.body.div.table.tr.time; 
    
  2. Schließung wie folgt aus:

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

Beide Arten verwenden XMLSlurper:

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

So gibt es eine andere Art und Weise Tabellenwerte des Erhaltens mit groovy

Danke für die Hilfe!

+2

Probleme mit einer der oben genannten Möglichkeiten, aufgrund derer ein dritter Ansatz erforderlich ist? – dmahapatro

+1

Sollte etwas in Ihrem Beispiel html eine Klasse von "Zeit" haben –

+0

1) Das Hauptanliegen der ersten Annäherung ist die hardcoded Lösung. Es ist nicht agil. Bei Änderungen der Struktur können unerwartete Ergebnisse zurückgegeben werden. Der zweite Ansatz ist mein bevorzugter Weg, dies jetzt zu tun. Hier ist das einzige Problem der Rechenaufwand und die Notwendigkeit von regulären Ausdrücken für einige Fälle. Ich suchte nach einer allgemeinen Lösung ähnlich wie: http://stackoverflow.com/questions/6325216/parse-html-table-to-python-list – Vanko

Antwort

1

Ich hatte gute Ergebnisse mit dem jsoup HTML-Parser. Es ist eine Java-Bibliothek, funktioniert aber gut mit Groovy. Hier ist ein Beispiel für parsing a table in Java, und eine hilfreiche blog entry auf Kratzen mit Groovy und jsoup. Diese question hat eine Antwort mit einem groovigen Beispiel zum Parsen einer Tabelle.

+0

Und das ist das Arbeitsbeispiel, das ich gefunden habe: http: // stackoverflow .com/questions/5396098/how-to-parse-a-tabelle aus html-using-jsoup. Es gibt auch eine groovige Version. Vielen Dank. – Vanko