我想从http模块中页面的html输出中找到tag的索引。 我正在使用
HTMLOutput.IndexOf("</head>");
其中HTMLOutput是字符串参数,它包含特定页面的整个html输出。 使用上面提到的方法,我能够找到结束头标记的索引,但只有当它是唯一的结束头标记时,当页面中有一些javascript函数插入一些动态html内容并包含一些结束标记时出现问题在其中,例如,
newWindow.document.writeln('</head>')
以及页面中是否有一些注释行由其中包含的某些第三方工具添加。
所以我无法找到原始标记的索引,是否有人知道如何解决这个问题可能是一些正则表达式,或者可以帮助我解决这个问题。
谢谢, MAC
答案 0 :(得分:3)
您可以使用Html Agility Pack查找<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。
答案 1 :(得分:1)
如果您可以确保所有javascript代码都在标记中,那么您可以使用
HTMLOutput.LastIndexOf("</head>");
但更好的方法是使用“ HTMLAgilityPack ”并解析您的内容。