# Probleme beim html parsen mit tagsoup



## frag1get1free (2. Jul 2010)

Hallo,
ich versuche für ein Projekt Daten aus eine Homepage auszulesen.
Und zwar will ich zum einen ein paar Links auslesen zum anderen den Inhalt einer Tabelle. Wobei ich die richtigen Links sowie die richtige Tabelle an den class Attributen erkennen kann.
Mein Problem ist, dass die Seite wie so oft kein valides html beinhaltet. Das konkrete Problem das ich momentan habe sind "&" statt "&amp;" in Links. 
(Ich hab es erstmal naiv mit einem normalen SAXParser versucht, hab aber schnell gesehen, dass das Blödsinn ist .)


Ich hab im Internet nach geeigneten Parsern gesucht und bin auf tagsoup (TagSoup home page) gestoßen.
Allerdings ist mir zum einen nicht klar mit welcher tagsoup SAXFeature ich verhindern kann, dass der beschriebene Fehler eine Exception wirft.
Zum anderen klappt das setzten von Features überhaupt nicht.

Der folgende Codeschnipsel zeigt, was ich in dem Abschnitt mache, der eine org.xml.sax.SAXNotRecognizedException für das entsprechende Feature schmeißt.

```
//ein InputStream "in" und ein DefaultHandler "handler" sind vorhanden...
SAXParserFactory parserFactory = SAXFactoryImpl.newInstance();
parserFactory.setFeature("http://www.ccil.org/~cowan/tagsoup/features/ignore-bogons", true);
SAXParser parser = parserFactory.newSAXParser();
parser.parse(in, handler);
```

Hat jemand eine Idee wie ich das hinbekommen? Ich selber habe leider kaum Erfahrung mit dem parsen von html und brauche das dringen für ein Uni Projekt.

Schonmal danke .


----------



## Marco13 (3. Jul 2010)

Hm. Keine konkrete Lösung für dein Problem, aber ich bin auch gerade dabei, HTML zu zerpflücken, und fand den Jericho HTML Parser dafür ganz OK. Da sind auch ein paar Beispielprogramme dabei die man anpassen kann.


----------



## frag1get1free (3. Jul 2010)

Hi Marco13,
danke für den Hinweis. Ich habe mich jetzt für Regex entschieden, da ich mit damit wenigstens halbwegs auskenne.


----------



## M.L. (4. Jul 2010)

> Regex


Darf man auch die Sprache Perl verwenden ?  Dort ginge es u.a. mit dem Modul HTML::TableExtract 
HTML mit REGEX bearbeiten stösst wg. der Vielzahl an zu beachtender Syntax schnell an seine Grenzen...


----------



## Marco13 (4. Jul 2010)

M.L. hat gesagt.:


> HTML mit REGEX bearbeiten stösst wg. der Vielzahl an zu beachtender Syntax schnell an seine Grenzen...



Definitiv. Wenn man immer vom einfachsten Fall ausgehen kann...

```
<table>
    <tr><td>Hallo</td><td>Welt!</td></tr>
    <tr><td>Wallo</td><td>Held!</td></tr>
</table>
```
.... geht das vielleicht noch, aber spätestens wenn's mit div's, CSS und auch schon an sich harmlosen "width"-Angaben in den td's losgeht, kommt man mit RegEx nicht mehr weit.




frag1get1free hat gesagt.:


> Hi Marco13,
> Ich habe mich jetzt für Regex entschieden, da ich mit damit wenigstens halbwegs auskenne.



"Wenn das einzige Werkzeug, das man kennt, ein Hammer ist, scheint jedes Problem ein Nagel zu sein..."


----------

