Me gustaría comentar todas las etiquetas de script de un HtmlDocument. De esta manera, cuando renderizo el documento, los scripts no se ejecutan, pero aún podemos ver lo que había allí. Desafortunadamente, mi enfoque actual está fallando:
foreach (var scriptTag in htmlDocument.DocumentNode.SelectNodes("//script"))
{
var commentedScript = new HtmlNode(HtmlNodeType.Comment, htmlDocument, 0) { InnerHtml = scriptTag.ToString() };
scriptTag.ParentNode.AppendChild(commentedScript);
scriptTag.Remove();
}
Tenga en cuenta que puedo hacer esto usando las funciones de reemplazo en el html, pero no creo que sea tan robusto:
domHtml = domHtml.Replace("<script", "<!-- <script");
domHtml = domHtml.Replace("</script>", "</script> -->");
Prueba esto:
foreach (var scriptTag in htmlDocument.DocumentNode.SelectNodes("//script"))
{
var commentedScript = HtmlTextNode.CreateNode(string.Format("<!--{0}-->", scriptTag.OuterHtml));
scriptTag.ParentNode.ReplaceChild(commentedScript, scriptTag);
}
Consulte esta solución SO muy limpia que utiliza el soporte de consulta Linq del paquete de agilidad HTML: htmlagilitypack : ¿elimina el script y el estilo?