【问题】
C#中,处理html:Type-2 Diabetes an Autoimmune Disease? – Hemoblogin – School …
时,想要去除其中的标签,此处为。
但是很明显,此处的确是可以自己手动用正则处理,但是明显很不安全和不全面。
所以希望找到一个办法,很安全的处理掉所有的html的标签。
【解决过程】
1.参考:
去试试:string InnerHtml = "Losing weight and belly fat improves sleep - Harvard Health ...";
string filderteHtml =HttpUtility.HtmlDecode(InnerHtml);
结果,如开始所预料的,还是没变化。
2.而此处,本身就是正在使用HtmlAgilityPack,所以,可以直接通过:HtmlNodeCollection h3aHtmlNodes = rootHtmlNode.SelectNodes("//h3[@class='r']/a");
foreach (HtmlNode h3aNode in h3aHtmlNodes)
{
//InnerHtml
//"Losing weight and belly fat improves sleep - Harvard Health ..."
//InnerText:
//"Losing weight and belly fat improves sleep - Harvard Health ..."
string title = h3aNode.InnerText;
}
而得到对应,过滤标签之后的html的text内容的:Losing weight and belly fat improves sleep – Harvard Health …"
所以,无需再操心html的标签。
3.当然,很简单的html的标签的过滤,则可以用那个正则:String result = Regex.Replace(htmlDocument, @"]*>", String.Empty);
的,至少满足一般的需求了。
【总结】
最好的办法还是,利用html解析库,比如HtmlAgilityPack,得到html的node后,通过InnerText,而直接得到过滤了标签后的文本内容。