我使用下面的代码从解析的 html 中剥离特定的 html 标记AngleSharp
(因为建议使用正则表达式来执行此类工作(AngleSharp
目前已维护,HtmlAgilityPack
不是,因此我一直在转向后者)。
它工作得很好 - 但现在我也想删除 html 评论。<!--
意思是在和-->
标签之间找到的任何东西。
这将如何实现AngleSharp
?在这里使用 QuerySelector 似乎不合适。
private string ExtractContentFromHtml(string input)
{
List<string> tagsToRemove = new List<string>
{
"script",
"style",
"img"
};
var config = Configuration.Default.WithJavaScript();
HtmlParser hp = new HtmlParser(config);
List<IElement> tags = new List<IElement>();
List<string> nodeTypes = new List<string>();
var hpResult = hp.Parse(input);
try
{
foreach (var tagToRemove in tagsToRemove)
tags.AddRange(hpResult.QuerySelectorAll(tagToRemove));
foreach (var tag in tags)
tag.Remove();
}
catch (Exception ex)
{
_errors.Add(string.Format("Error in cleaning html. {0}", ex.Message));
}
var content = hpResult.QuerySelector("body");
return (content).InnerHtml;
}