Ich versuche, die Webseite in einen reinen Text umzuwandeln. Aber wenn ich auf den Tisch stoße, bekomme ich auch td- und tr-Tags. Wenn ich diese Tabellentags ersetze, kann ich einige Inhalte nicht erhalten.
Hier ist mein Code
string s = Regex.Replace(htmldoc, "<script.*?</script>", "", RegexOptions.Singleline | RegexOptions.IgnoreCase);
s = Regex.Replace(s, "<!--.*?-->", "", RegexOptions.Singleline | RegexOptions.IgnoreCase);
s = Regex.Replace(s, "<style.*?style>", "", RegexOptions.Singleline | RegexOptions.IgnoreCase);
s = Regex.Replace(s, "<a.*?a>", "", RegexOptions.Singleline | RegexOptions.IgnoreCase);
s = Regex.Replace(s, "<img.*?img>", "", RegexOptions.Singleline | RegexOptions.IgnoreCase);
s = Regex.Replace(s, "<table.*?table>", "", RegexOptions.Singleline | RegexOptions.IgnoreCase);
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(s);
s = doc.DocumentNode.SelectSingleNode("//body").InnerText.Trim();
Bitte überprüfen Sie es und sagen Sie mir, wie ich den Inhalt aus der Tabelle bekommen kann, ohne td und tr-Tags zu bekommen.
Wenn Sie das HTML-Agility-Paket zum Analysieren der Tabelle verwenden, müssen Sie die HTML-Tags nicht mit Ihrer Regex entfernen. Es gibt einige gute Beispiele für das Parsen von Tabellen mit dem HTML-Agility-Paket hier auf SO. Beispiel: HTML Agility Pack - Analysetabellen
Sie können den InnerText
des Körpers InnerText
:
string html = @"
<html>
<title>title</title>
<body>
<h1> The wheel.</h1>
Stop reinventing the wheel ! Use powerful APIs
for manipulating html docs !
<h3> I am fine </h3>
<img src=""da_wheel_in_my_mind.png""/>
</body>
</html>";
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
string text = doc.DocumentNode.SelectSingleNode("//body").InnerText;
Als nächstes möchten Sie möglicherweise Leerzeichen und neue Zeilen reduzieren:
text = Regex.Replace(text, @"\s+", " ").Trim();
Beachten Sie jedoch, dass Markups wie hello<br>world
oder hello<i>world</i>
in diesem Fall durch InnerText
in helloworld
konvertiert werden und die Tags entfernen. Es ist schwierig, dieses Problem zu lösen, da die Anzeige oft vom CSS und nicht nur vom Markup bestimmt wird.