首页 文章

HtmlAgilityPack和HtmlDecode

提问于
浏览
45

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

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

3 回答

  • 9

    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

    只需加上我的2美分:我使用 StopWatch 类运行了一些性能测试,发现 HttpUtility.HtmlDecodeDeEntitize 方法大约15-20% faster . 另外 DeEntitize 也有一些错误(见上面的评论) .

    所以也许引用System.Web毕竟不是那么糟糕 .

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

  • 87

    使用不需要任何特殊参考的WebUtility .

相关问题