Extraction de texte à partir de l'HTML Java
Je suis en train de travailler sur un programme qui télécharge des pages HTML et ensuite, sélectionne certaines de l'information et de l'écrire dans un autre fichier.
Je veux extraire l'information qui est intbetween les étiquettes de paragraphe, mais je ne peux faire une ligne du paragraphe. Mon code est comme suit;
FileReader fileReader = new FileReader(file);
BufferedReader buffRd = new BufferedReader(fileReader);
BufferedWriter out = new BufferedWriter(new FileWriter(newFile.txt));
String s;
while ((s = br.readLine()) !=null) {
if(s.contains("<p>")) {
try {
out.write(s);
} catch (IOException e) {
}
}
}
j'ai essayé d'ajouter une autre boucle while, qui serait de dire au programme pour garder l'écriture dans le fichier jusqu'à ce que la ligne contient le </p>
tag, en disant;
while ((s = br.readLine()) !=null) {
if(s.contains("<p>")) {
while(!s.contains("</p>") {
try {
out.write(s);
} catch (IOException e) {
}
}
}
}
Mais cela ne fonctionne pas. Quelqu'un pourrait s'il vous plaît aider.
- Nous sommes certainement en voir un bug dans l'échappement de balises HTML.
- Êtes-vous citant comme code avec backticks?
- HTML analyseurs n'existe pas et il y en a beaucoup.
Vous devez vous connecter pour publier un commentaire.
jsoup
Un autre analyseur html j'ai vraiment aimé l'aide a été jsoup. Vous pouvez obtenir tous les
<p>
éléments en 2 lignes de code.Puis l'écrire dans un fichier dans une ligne
ou si vous le souhaitez sur des lignes séparées, vous pouvez parcourir les éléments et de les enregistrer séparément.
p
balises (non-sémantique mark up), je suppose que cela ne fonctionne pasp
éléments. Cette réponse est sur place correcte.jericho est l'un de plusieurs posible html analyseurs qui pourrait rendre cette tâche à la fois facile et sûr.
JTidy peut représenter un document HTML (même un mal formé un) comme un modèle de document, ce qui rend le processus de l'extraction du contenu d'un
<p>
balise un peu plus élégant que manuellement médiateur à travers le texte brut.Essayez (si vous ne souhaitez pas utiliser un analyseur HTML bibliothèque):
<p>
et</p>
sont sur la même ligne? Dans ce cas, la chaîne sera écrit deux fois. Je suppose que cela dépend vraiment de l'entrée.J'ai eu du succès en utilisant TagSoup & XPath pour analyser HTML.
http://home.ccil.org/~cowan/XML/tagsoup/
Utiliser un ParserCallback. Ses une classe simple, c'est fourni avec le JDK. Elle vous informe chaque fois qu'un nouveau tag est trouvé et puis vous pouvez extraire le texte de l'étiquette. Exemple Simple:
Donc tout ce que vous devez faire est de définir un indicateur booléen lorsque la balise de paragraphe est trouvé. Puis, dans la handleText() la méthode d'extraire le texte.
De l'essayer.
Vous peut-être simplement en utilisant le mauvais outil pour le travail: