2009-04-03 4 views
4

Ich möchte in der Lage sein, Inhalte von Webseiten, vor allem die Tags und den Inhalt in ihnen greifen. Ich habe XQuery und XPath ausprobiert, aber sie scheinen nicht für falsches XHTML zu arbeiten und REGEX ist nur ein Schmerz.Was ist der beste Weg, scrape schlecht geformte XHTML-Seiten für eine Java-App

Gibt es eine bessere Lösung? Idealerweise möchte ich in der Lage sein, nach allen Links zu fragen und eine Reihe von URLs zurück zu bekommen oder nach dem Text der Links zu fragen und eine Reihe von Strings mit dem Text der Links zurück zu bekommen oder nach dem ganzen fett gedruckten Text zu fragen usw.

+0

Kumpel, Sie haben mich gerade von der Veröffentlichung einer doppelten Frage gerettet :) Genau, was ich mehr herausfinden muss. Vielen Dank. –

+0

Technisch kann XHTML nicht schlecht gebildet werden. Eine Bedingung von XHTML ist, dass es gut gebildet und gültig ist. Sorry für den lahmen Kommentar, ungültiges XHTML verärgert mich. –

Antwort

4

Führen Sie das XHTML durch etwas wie JTidy, die Ihnen gültige XML zurückgeben sollte.

2

Sie möchten vielleicht Watij betrachten. Ich habe nur seinen Ruby-Cousin, Watir, verwendet, aber damit konnte ich eine Webseite laden und alle URLs der Seite auf genau die Weise anfordern, die Sie beschreiben.

Es war sehr einfach zu arbeiten - es feuert buchstäblich einen Webbrowser und gibt Ihnen Informationen in netten Formen zurück. IE-Unterstützung schien am besten, aber zumindest mit Watir wurde auch Firefox unterstützt.

+0

Ich habe Watij verwendet und es funktioniert sehr schön –

2

Ich hatte einige Probleme mit JTidy zurück in den Tag. Ich denke, dass es mit nicht geschlossenen Tags zusammenhing, die JTidy zum Scheitern brachten. Ich weiß nicht, ob das jetzt behoben ist. Ich verwendete etwas, das ein Wrapper um TagSoup war, obwohl ich mich nicht an den genauen Projektnamen erinnere. Theres auch HTMLCleaner.

2

Ich habe http://htmlparser.sourceforge.net/ verwendet. Es kann schlecht formatiertes HTML parsen und erlaubt die Datenextraktion relativ einfach.

+0

das scheint sehr ähnlich zu dem .NET "HTML Agility Pack", die ich verwende, um genau das zu tun, was gewünscht wird (erhalten Daten aus dem HTML mit xPath - auch wenn es nicht gut gebildet ist) – Dror

Verwandte Themen