Comment puis-je extraire du texte à partir de l'html
J'ai une exigence pour extraire tout le texte qui est présent dans le <body>
de l'html. Exemple de code Html d'entrée :-
<html>
<title>title</title>
<body>
<h1> This is a big title.</h1>
How are doing you?
<h3> I am fine </h3>
<img src="abc.jpg"/>
</body>
</html>
La sortie doit être :-
This is a big title. How are doing you? I am fine
Je veux utiliser uniquement HtmlAgility à cette fin. Aucune des expressions régulières s'il vous plaît.
Je sais comment charger HtmlDocument, puis à l'aide de xquery comme "//corps", on peut obtenir le contenu du corps. Mais comment puis-je bande le html comme je l'ai montré dans la production?
Merci d'avance 🙂
- Voir cette question pour le code HTML Agility Pack liens. Je suppose que vous avez d'appeler quelque chose comme
InnerText
bien sur laHtmlNode
.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le corps de l'
InnerText
:Ensuite, vous souhaiterez peut-être réduire les espaces et les nouvelles lignes:
Noter, cependant, que, bien qu'il travaille dans ce cas, le balisage tels que
hello<br>world
ouhello<i>world</i>
sera converti parInnerText
àhelloworld
- de supprimer les balises. Il est difficile de résoudre cette question, comme d'affichage est souvent déterminée par le CSS, pas seulement par le balisage.Comment sur l'utilisation de l'expression XPath
'//body//text()'
pour sélectionner tous les nœuds de texte?Normalement pour l'analyse de html, je recommanderais un analyseur HTML, cependant, si vous souhaitez supprimer toutes les balises html d'un simple regex devrait fonctionner.
Vous pouvez utiliser NUglify qui prend en charge l'extraction du texte de HTML:
Que c'est à l'aide d'un HTML5 personnalisé de l'analyseur, il devrait être assez robuste (spécialement si le document ne contient pas d'erreurs) et est très rapide (pas de regexp en cause, mais une pure descente récursive de l'analyseur, plus rapide que HtmlAgilityPack et plus de GC amical)
HtmlAgilityPack
sous le capot, comme suggéré par le a accepté de répondre.HtmlAgilityPack
, il a son propre HTML5 personnalisé de l'analyseur.