HtmlAgilityPack and HtmlDecode

60
我目前正在使用HtmlAgilityPack和控制台应用程序来抓取网站。由于HTML是编码的(它返回像'这样的编码字符),所以在保存内容到我的数据库之前,我必须进行解码。
有没有一种方法可以在不使用HttpUtility.HtmlDecode的情况下使用HtmlAgilityPack解码返回的HTML?如果可能的话,我想避免将System.Web添加到我的控制台应用程序中。

为什么你不添加System.Web?由于它是默认的.NET库,因此在任何客户端机器上都应该可用... - Christoph Fink
4
错误;它不在客户端档案中。 - SLaks
3个回答

118

Html Agility Pack配备了一个名为HtmlEntity的实用程序类。它具有以下签名的静态方法:

/// <summary>
/// Replace known entities by characters.
/// </summary>
/// <param name="text">The source text.</param>
/// <returns>The result text.</returns>
public static string DeEntitize(string text)

它支持常见实体(如&nbsp;)和编码字符,例如&#039;


18

仅提供我的看法:我使用 StopWatch 类进行了一些性能测试,并发现 HttpUtility.HtmlDecodeDeEntitize 方法约快 15-20% 。此外,DeEntitize 还存在一些错误(请参见上面的评论)。

因此,引用 System.Web 可能并不那么糟糕。

如果您正在编写一个已针对“.NET完整版”(与轻量级版本“。NET客户端配置文件”相对)的应用程序,则我建议引用 System.Web。


9
“comments above” 是指上方的评论。 - Mathias Lykkegaard Lorenzen

9

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接