如何在html输出中找到end head标记

本文关键字:end head 标记 html 输出 | 更新日期: 2023-09-27 18:25:41

我想从http模块中页面的html输出中找到标记的索引。我正在使用

HTMLOutput.IndexOf("</head>");

其中HTMLOutput是字符串参数,它组成特定页面的整个html输出。使用上面提到的方法,我能够找到端头标签的索引,但只有当它是唯一的端头标签时,当页面中有一些javascript函数插入一些动态html内容并包含一些端头标签(例如)时,问题就会出现

newWindow.document.writeln('</head>')

以及如果页面中有一些评论行是由包含在其中的一些第三方工具添加的

所以我找不到原始标签的索引,有人知道如何解决这个问题吗?可能是一些正则表达式或在这种情况下可以帮助我的东西。

谢谢,Mac

如何在html输出中找到end head标记

您可以使用Html敏捷包来查找<head>标签,然后在其中注入<script>元素:

var doc = new HtmlDocument();
doc.LoadHtml(HTMLOutput);
var head = doc.DocumentNode.SelectSingleNode("//head");
head.AppendChild(HtmlNode.CreateNode("<script>...</script>"));

要获得结果HTML,您只需使用:

using (StringWriter writer = new StringWriter())
{
    doc.Save(writer);
    HTMLOutput = writer.ToString();
}

现在HTMLOutput变量保存修改后的HTML。

如果你能确保所有javascript代码都在标签中,那么你就可以使用

HTMLOutput.LastIndexOf("</head>");

但更好的方法是使用"HTMLAgility Pack"并解析您的内容。