html parser

bblog

Grünschnabel
Hallo,

viel Grüße erstmal, ich bin ja neu hier :)

Und zwar habe ich folgendes Problem. Ich möchte Webseiten parsen, die in einer Datenbank gespeichert sind. Nun gibt es aber ein Problem beim Parsen.

Das war mein erster Versuch, den ich auch in diesem Forum gefunden habe:

Code:
BufferedReader br = new BufferedReader(new InputStreamReader(is));

		  HTMLEditorKit htmlKit = new HTMLEditorKit();
		        HTMLDocument htmlDoc = (HTMLDocument)  htmlKit.createDefaultDocument();
		        HTMLEditorKit.Parser parser = new ParserDelegator();
		        HTMLEditorKit.ParserCallback callback = htmlDoc.getReader(0);
   
       
		        parser.parse(br, callback, true);

Funktioniert auch ziemlich gut, der Haken ist aber, das "parser.parse(br, callback, true);" nicht nur Daten aus der Datenbank ließt, sondern auch welche aus dem Internet. Ich nehme mal an, die Webseite wird noch einmal generiert, wenn zb .css Links vorkommen und nachgeladen werden. Das ist aber für meine Zwecke nicht wünschenswert. Kann man das Nachladen irgendwie deaktivieren?

Habt ihr eine Idee zur Lösung des Problems?

Grüßli
 
hi,

es gibt noch andere APIS zum Parsen von html Seiten - probiere mal herum.

Ansonsten kannst Du versuchen, die bestehende API selbst zu erweitern
(schreibe Dir eigene Unterklassen, in denen Du Methoden wie z.B. das Laden dynamischer Inhalte aus dem Web überschreibst).

Fast zu 100% müsste es Einstellungsmöglichkeiten geben, die ein Laden dynamischer Inhalte an- bzw. ausschalten können - also Konfigurationsmöglichkeiten
innerhalb der API, das wäre die einfachste Lösung hier.

Gruß T
 
http://www.google.de/search?client=...de&q=java+html+parser&meta=&btnG=Google-Suche

Was du da benutzt ist eigentlich eine Bibliothek zum anzeigen von HTML. Für die korrekte Darstellung ist es dann natürlich notwendig die entsprechenden CSS Files nachzuladen.

Wenn du ein reines Parsen brauchst ist eine dedizierte Library wahrscheinlich sinnvoller. Meiner Erfahrung nach sind JRE Klassen nicht sonderlich gut designt und laden daher nicht wirklich zum customizen ein. Desweiteren sind javax.swing Klassen im headless mode auch eher ungünstig. Der Link oben spuckt einige Biliotheken aus, die das ohne GUI Code anstellen. Vielleicht hilft das weiter.

Gruß
Ollie
 

Neue Beiträge

Zurück