我需要看看HTML页面标记是否在源代码中包含了谷歌分析,在脚本块中,以及脚本块是否在<title>
标记之上。什么是正确的方式来查找JavaScript标记并确定它是否位于标题标签之上?
我已经设法将网页的源代码放入一个变量中。
我挣扎写正确的正则表达式来拉出的代码谷歌分析部分,以了解是否首先它是目前其次是,JavaScript是一种标记之前!
有什么建议吗?
我需要看看HTML页面标记是否在源代码中包含了谷歌分析,在脚本块中,以及脚本块是否在<title>
标记之上。什么是正确的方式来查找JavaScript标记并确定它是否位于标题标签之上?
我已经设法将网页的源代码放入一个变量中。
我挣扎写正确的正则表达式来拉出的代码谷歌分析部分,以了解是否首先它是目前其次是,JavaScript是一种标记之前!
有什么建议吗?
避免使用正则表达式来解析html;有太多的陷阱。假设您在文档中搜索字符串“< title”。如果您没有找到“< TITLE”,该怎么办?好的,容易做到不区分大小写的匹配。但是......如果评论中嵌入了“<标题”字符串呢?如果在脚本块中嵌入了这样的字符串会怎样?等等
HTML文档的任何“搜索”需要做的不仅仅是文本搜索。它需要文件意识。这就是HtmlAgilityPack提供的。这是一个免费下载。
开始是这样的:
using HtmlAgilityPack;
....
HtmlDocument doc = new HtmlDocument();
doc.Load(fileName);
var titles = doc.DocumentNode.SelectNodes("/html/head/title");
if (titles != null)
{
foreach(var title in titles)
{
Console.WriteLine("<title> on line: " + title.Line);
}
var scripts = doc.DocumentNode.SelectNodes("/html/head/script");
if (scripts != null)
{
foreach(var script in scripts)
{
Console.WriteLine("<script> on line: " + script.Line);
// here, you need to decide if the script is before the title
// and if it is the "right" script - google analytics.
// you have to do that part yourself.
}
}
else
{
Console.WriteLine("No script nodes found.");
}
}
else
{
Console.WriteLine("No title node found.");
}
这是伟大的! –
我希望,你是不是想用正则表达式解析HTML? –
什么是正确的方法来做到这一点? –
使用一些html解析器(例如HtmlAgilityPack)来执行此操作。 –