suite à ma précédente question ici: Extending a basic web crawler to filter status codes and HTML, je suis en train d'extraire des informations à partir des balises HTML, dans ce cas, « title », avec la méthode suivante:Parsing HTML dans web crawler
public static void parsePage() throws IOException, BadLocationException
{
HTMLEditorKit kit = new HTMLEditorKit();
HTMLDocument doc = (HTMLDocument) kit.createDefaultDocument();
doc.putProperty("IgnoreCharsetDirective", Boolean.TRUE);
Reader HTMLReader = new InputStreamReader(testURL.openConnection()
.getInputStream());
kit.read(HTMLReader, doc, 0);
// Create an iterator for all HTML tags.
ElementIterator it = new ElementIterator(doc);
Element elem;
while ((elem = it.next()) != null)
{
if (elem.getName().equals("title"))
{
System.out.println("found title tag");
}
}
}
Cela fonctionne en ce qui me dit qu'il a trouvé les étiquettes. Ce que je suis aux prises avec est de savoir comment extraire les informations contenues après/en leur sein.
J'ai trouvé cette question sur le site: Help with Java Swing HTML parsing, mais elle indique qu'elle ne fonctionnera qu'avec du HTML bien formé. J'espérais qu'il y a un autre moyen.
N'importe quel pointeur apprécié.
Merci Alexey. Y at-il un moyen de le faire sans utiliser une bibliothèque externe? – Robert
Si vous avez besoin d'une solution jetable rapide, vous pouvez extraire le titre en utilisant des expressions régulières, mais en général, évitez d'utiliser des expressions rationnelles pour le HTML –
Oui, je suppose que l'utilisation d'expressions rationnelles pour analyser le HTML est mal vue. Dans ce cas, j'ai seulement besoin de l'information "titre". – Robert