HtmlAgilityPack和HtmlDecode

时间:2011-07-12 14:07:57

标签: html-agility-pack

我目前正在使用带有控制台应用程序的HtmlAgilityPack来抓取网站。由于html是编码的(它返回像'这样的编码字符),我必须在将内容保存到数据库之前进行解码。

有没有办法使用HtmlAgilityPack解码返回的html而不必使用HttpUtility.HtmlDecode?我希望尽可能避免将System.Web添加到我的控制台应用程序中。

3 个答案:

答案 0 :(得分:93)

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;

答案 1 :(得分:11)

添加我的2美分:我使用StopWatch课程进行了一些性能测试,发现HttpUtility.HtmlDecode比{{1}大约15-20%更快 }} 方法。 DeEntitize也有一些错误(见上面的评论)。

所以也许引用System.Web并不是那么糟糕。

如果您正在编写一个已经定位“.NET full”的应用程序(与“.NET Client Profile”相反 - 这是一个轻量级版本) - 我会去引用System.Web。

答案 2 :(得分:1)

使用WebUtility,不需要任何特殊参考。