将网页转换为纯文本..
本文关键字:文本 转换 网页 | 更新日期: 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>world
或hello<i>world</i>
将被InnerText
转换为helloworld
-删除标记。这个问题很难解决,因为显示通常是由CSS决定的,而不仅仅是由标记决定的。