Html tabelle auslesen???

1991macl

Mitglied
Ich möchte aus einer Internetseite eine Tabelle auslesen, z.B. Wikipedia...
Habe das bislang so:

Code:
import org.w3c.tidy.Tidy;
import org.w3c.dom.Node;
import org.w3c.dom.NamedNodeMap;
import java.net.URL;
import java.util.ArrayList;
 
public class Erste{
    public static void printSelectedTags(Node parent, String ... selectedTags){
        for(int i = 0; i < selectedTags.length; i++){
            if(parent.getNodeName().equals(selectedTags[i])){
                NamedNodeMap nmap = parent.getAttributes();
                System.out.print("<" + parent.getNodeName());
                for(int j = 0; j < nmap.getLength(); j++)
                    System.out.print(" " + nmap.item(j).getNodeName() + "=\"" + nmap.item(j).getNodeValue() + "\"");
                System.out.println(">");
            }
        }
 
        for(int i = 0; i < parent.getChildNodes().getLength(); i++)
            printSelectedTags(parent.getChildNodes().item(i), selectedTags);
    }
    
    public static void main(String[] args) throws Exception{
        Tidy t = new Tidy();
        t.setXmlTags(true);
        URL url = new URL("http://de.wikipedia.org/wiki/Deutschland");
        Node rootElement = t.parseDOM(url.openConnection().getInputStream(), null);
        printSelectedTags(rootElement, "tr", "td");
    }
}


Allerdings möchte ich nicht die Informationen von <td style="...".....> sonder dass was zwischen <td style="..."> und </td> steht, also sozusagen den Tabelleninhalt.

Als Beispiel(Wikipedia Deutschland-Artikel):

HTML:
<td style="background-color:#f2f2f4; font-size:90%;" valign="top"><b><a href="/wiki/Hauptstadt" title="Hauptstadt">Hauptstadt</a></b></td>
<td style="font-size:90%;"><a href="/wiki/Berlin" title="Berlin">Berlin</a></td>
)

Da möchte ich nur Hauptstadt und Berlin haben...

Hoffe ich habe es einigermaßen gut erklärt...
 

Final_Striker

Top Contributor
Da wirst du wohl mit RegEx Ausdrücken arbeiten müssen und so die für dich benötigten Sachen rauszuparsen.

z.B. könntest du alles zwischen
Code:
<td
und nächstem
Code:
>
einfach rauslöschen.
 
Zuletzt bearbeitet:
N

nillehammer

Gast
Du arbeitest ja schon mit Tidy und w3c-Nodes. Node gibt Dir alles, was Du brauchst. Du musst anhand des Nodetypes verzweigen. Wenn Du bspw. den Text zwischen den tds haben willst, ist die Konstante TEXT_NODE Dein Freund.
Infos gibts hier: Node (Java 2 Platform SE 5.0)
 

1991macl

Mitglied
Habe mich jetzt schon ein bisschen damit versucht, es aber noch nicht hinbekommen...
Bin ich aber richtig, dass ich die Methode getTextContent() brauche?
Vielleicht kannst du mir noch ein bisschen mehr helfen, nillehammer?

Aber danke schon mal für eure Beiträge!!!
 
N

nillehammer

Gast
Hier mal Code für Dich zum Nachvollziehen, wie man in einen Baum hinabsteigt und abhängig von Nodetypes verzweigt. Der Code ist nicht 100% durchgetestet. Kann also sein, dass kliene logische Fehler drinnen sind. Außerdem könnte es auch sinnvoll sein, an geeigneter Stelle von Node auf Element zu casten, weil es sich damit evtl. bequemer arbeiten lässt.
Java:
private static final String TD = "td";
...
// Den root node hast Du schon in der Variablen rootElement (siehe Dein eigener Code)
final NodeList rootChildren = rootElement.getChildNodes();

findTds(rootChildren);

/**
  * Steigt einen Baum von tags hinab. Sobald ein td-Tag gefunden wurde, 
  * wird dieser zur besonderen Behandlung an eine weitere Methode übergeben
  */
private static void findTds(final NodeList nodeList) {

  for(int i = 0; i<nodeList.getLength(); i++) {
 
    final Node current = nodeList.item(i);

    if( current.getNodeType() != Node.ELEMENT_NODE) { 
      // Wir haben irgendwas anderes als einen Tag. Interessiert uns nicht.
      // Nix machen und zum nächsten Child weiter...
      continue;
    }

    if ( TD.equalsIgnoreCase(current.getNodeValue()) ) {
      // Wir haben einen td gefunden.
      printTextContentOfTd(current);
    }
    
    // rekursiver Aufruf, um weiter in den Baum hinabzusteigen
    findTds(current);
  }

}

/**
  * Geht die Liste der Kinder eines (td-)Nodes durch. Bei allen Textknoten
  * wird der Text auf der Konsole ausgegeben.
  */
private static void printTextContentOfTd(final Node tdNode) {

   final NodeList children = tdNode.getChildNodes();
 
   for( int i = 0; i< children.getLenght(); i++ ) {
     final Node current = children.item(i);
     if (current.getNodeType == Node.TEXT_NODE) {
       System.out.println(current.getNodeValue();
     }
   }
}
}
 
Zuletzt bearbeitet von einem Moderator:

1991macl

Mitglied
Habe das Wochenende rumprobiert, es allerdings immer noch nicht hinbekommen... :(
Könntest du mir einen funktionierenden Quellcode schicken?
Ich weiß dass ich es eigentlich selber machen sollte, bekomme es wie gesagt aber nicht hin... :(
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B JAXB und HTML XML & JSON 1
T HTML mit Hilfe Jsoup einlesen XML & JSON 11
C javascript in .html Funktioniert, in .xhtml nicht mehr XML & JSON 0
M parsen von realen HTML-WEB-Seiten XML & JSON 1
P HTML XPath XML & JSON 1
K Einlesen eines Parameters aus HTML-Datei XML & JSON 4
Airwolf89 HTML Datei mit SAXBuilder laden hängt sich auf XML & JSON 4
K docBook XSLT: HTML Code Snippet in Erzeugte HTML Dokument einfügen XML & JSON 9
D Wie XML Datei einlesen und HTML entities übernehmen? XML & JSON 3
R Problem bei: XML und XSL zu HTML XML & JSON 2
T Möchte JSP Code in Attribut eines HTML Tags hinein generieren XML & JSON 3
slawaweis XML Prettyprinter zu HTML XML & JSON 3
S Typsicherer HTML-Parser XML & JSON 5
S HTML Parser XML & JSON 2
F Probleme beim html parsen mit tagsoup XML & JSON 4
M HTML Quellcode verarbeiten XML & JSON 4
J DOM zu HTML XML & JSON 3
S DOM Parsen Problem mit HTML Sonderzeichen XML & JSON 4
A aus xml --> html Problem XML & JSON 3
M HTML-Entities XML & JSON 4
M Suche HTML-API XML & JSON 3
G Servlet mittels XSL in HTML konvertieren XML & JSON 5
K html -> cyberneko -> xml -> jdom . XML & JSON 3
S HTML mit dom4j parsen? XML & JSON 2
M TextContent eines XML-Elements enthält HTML-Tags . was nun XML & JSON 2
L mit Java eine HTML-Datei erstellen XML & JSON 3
B html->xslfo->pdf XML & JSON 5
G HTML in PDF umwandeln XML & JSON 9
P HTML Seite Parsen, und bestimmten Text extrahieren XML & JSON 3
J Exception bei "vorselektiertem" HTML XML & JSON 3
C HTML-Befehle per Java entfernen XML & JSON 7
P HTML-Sting in JDOM XML & JSON 7
G HTML -> XML XML & JSON 2
A html-File nach txt-File konvertieren XML & JSON 15
F XML Datei als HTML? XML & JSON 4
flashfactor HTML in XML XML & JSON 3
FsMarine HTML to PDF Konventieren XML & JSON 6
P HTML mit JDOM erstellen und in JEditorPane zeigen XML & JSON 4
B JDom + HTML XML & JSON 2
B DOM oder HTML File drucken "wie ein Browser es zeigen w XML & JSON 3
D ods./Excel Tabelle oder doch SQL für nen Anfänger? XML & JSON 5
L Mit Hilfe von POI eine Tabelle ohne Rahmen in Word schreiben XML & JSON 2
JanUlrich Tabelle auslesen XML & JSON 2
P Poi /XSSF : Excel-Tabelle auslesen XML & JSON 2
D Datenbank-Tabelle to XML XML & JSON 11
L XML Daten auslesen und in Tabelle (Array) speichern XML & JSON 1
O OpenDocument-Tabelle mit Java lesen und schreiben XML & JSON 3
L JSON auslesen und Labels in GUI verwenden XML & JSON 13
M json page 2 auslesen XML & JSON 1
J Auslesen der Länge einer XML-Datei in Android Studio XML & JSON 8
Kanda Sorata Eingabefelder von Excel Dateien auslesen XML & JSON 1
K XML vernünftig auslesen XML & JSON 9
K XML Datei erstellen und Daten daraus in Java auslesen XML & JSON 6
H SOAPBody auslesen XML & JSON 0
B XML auslesen, benötige Hilfe XML & JSON 13
I Liste in YAML Datei speichern und wieder auslesen XML & JSON 1
W XML einlesen und Attribute auslesen XML & JSON 1
A Leeres Array beim Auslesen von XML-Datei XML & JSON 4
M Json auslesen XML & JSON 7
K XML Auslesen, wie abspeichern? XML & JSON 32
D Attribute aus XML Auslesen XML & JSON 5
W Kindelemente mit JDOM eines bestimmten Attributes auslesen XML & JSON 6
R Apache POI: Gezieltes Auslesen von Zellen XML & JSON 2
S XMl auslesen:@ output ? XML & JSON 1
Z Verschachtelte XML auslesen XML & JSON 3
C JDOM: Value ohne Unterelemente auslesen XML & JSON 1
C XPath: Alle Kinder in einer Schleife auslesen XML & JSON 2
I XML IDs auslesen, erst X dann Y XML & JSON 2
S XML - rekursives auslesen - Zeilenumbruch als NodeValue? XML & JSON 3
O XML richtig auslesen XML & JSON 7
Kenan89 XML Tag-ID auslesen mit getElementById XML & JSON 2
J Excel zeilenweise auslesen - POI XML & JSON 5
J Excel Zellen auslesen - automatischer Stopp bei leerer Zelle XML & JSON 2
I XPath Namensräume und auslesen einzelner Knoten XML & JSON 3
S SVG auslesen und darstellen XML & JSON 5
G xpath: in Kindelement zwei Attribut-Werte auslesen XML & JSON 2
G xpath: Inhalt eines Kindelements auslesen XML & JSON 2
A XSl mit JDom auslesen XML & JSON 1
J Anzahl der Elemente in einem XML-Dokument auslesen XML & JSON 7
K XMl auslesen XML & JSON 19
S XSD-Datei zulässige Werte auslesen XML & JSON 3
D rss auslesen XML & JSON 2
S Attribute von Elementen auslesen mit XPath XML & JSON 2
M Große Datei auslesen/in dieser suchen XML & JSON 2
M RSS-Datei auslesen von Yahoo Webservice XML & JSON 4
N Google Wetter XML (nur current_condition) auslesen mit Java XML & JSON 15
J Dateinamen beim Start auslesen XML & JSON 8
eQuest XML Jaxen Attribute auslesen XML & JSON 2
E XML Datei mit DOM auslesen (Text mit Attributen) XML & JSON 2
P jdom XML-Encoding auslesen XML & JSON 12
H XML Attribute auslesen XML & JSON 5
Nicer Bestimmten Wert aus einer XML Auslesen XML & JSON 34
L XML Dokument auslesen funktioniert nicht richtig XML & JSON 2
C Attributwert aus XML auslesen XML & JSON 10
H XML String auslesen XML & JSON 4
E XML Knoten mit rekursiver Methode auslesen XML & JSON 3
S Dom Baum auslesen XML & JSON 12
J Properties auslesen (Jar) XML & JSON 1
S auslesen XML & JSON 9
Z XML auslesen, Elemente daraus entfernen und als neue XML zurückgeben XML & JSON 2

Ähnliche Java Themen

Neue Themen


Oben