我目前正在使用带有控制台应用程序的HtmlAgilityPack来抓取网站。由于html是编码的(它返回像'
这样的编码字符),我必须在将内容保存到数据库之前进行解码。
有没有办法使用HtmlAgilityPack解码返回的html而不必使用HttpUtility.HtmlDecode?我希望尽可能避免将System.Web添加到我的控制台应用程序中。
答案 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)
它支持众所周知的实体(如
)和编码字符,例如'
。
答案 1 :(得分:11)
添加我的2美分:我使用StopWatch
课程进行了一些性能测试,发现HttpUtility.HtmlDecode
比{{1}大约15-20%更快 }} 方法。 DeEntitize
也有一些错误(见上面的评论)。
所以也许引用System.Web并不是那么糟糕。
如果您正在编写一个已经定位“.NET full”的应用程序(与“.NET Client Profile”相反 - 这是一个轻量级版本) - 我会去引用System.Web。
答案 2 :(得分:1)
使用WebUtility,不需要任何特殊参考。