将网页转换为纯文本..

本文关键字:文本 转换 网页 | 更新日期: 2023-09-27 18:01:38

我正在尝试将网页转换为纯文本。但如果我遇到的表,我得到td和tr标签了。如果我替换那些表格标签,那么我就无法获得一些内容。

我的代码

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();

请检查并告诉我如何从表中获取内容而不获得td和tr标签

将网页转换为纯文本..

如果您使用HTML Agility pack来解析表,则不需要使用regex删除HTML标签。这里有一些使用HTML敏捷包解析表的好例子。示例:HTML Agility pack -解析表

您可以使用body的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;

接下来,你可能想折叠空格和新行:

text = Regex.Replace(text, @"'s+", " ").Trim();

注意,然而,当它在这种情况下工作时,标记如hello<br>worldhello<i>world</i>将被InnerText转换为helloworld -删除标记。这个问题很难解决,因为显示通常是由CSS决定的,而不仅仅是由标记决定的。