解析HTML以获取脚本变量值

我正在尝试找到一种方法来访问我发出HTTP请求的服务器返回的标签之间的数据。 该文档有多个标签,但只有一个标签之间有JavaScript代码,其余标签包含在文件中。 我想访问脚本标记之间的代码。

代码的一个例子是:

 // Some HTML  var spect = [['temper', 'init', []], ['fw\/lib', 'init', [{staticRoot: '//site.com/js/'}]], ["cap","dm",[{"tackmod":"profile","xMod":"timed"}]]];  // More HTML  

我正在寻找一种理想的方法来获取’spect’之间的数据并解析它。 有时在’spect’和’=’之间有一个空格,有时则没有。 不知道为什么,但我无法控制服务器。

我知道这个问题可能已被提出,但回复建议使用类似HTMLAgilityPack的东西,而我宁愿避免使用库来执行此任务,因为我只需要从DOM获取一次JavaScript。

使用HTMLAgilityPackJurassic库评估结果非常简单的示例:

 var html = @" // Some HTML  // More HTML "; // Grab the content of the first script element HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); doc.LoadHtml(html); var script = doc.DocumentNode.Descendants() .Where(n => n.Name == "script") .First().InnerText; // Return the data of spect and stringify it into a proper JSON object var engine = new Jurassic.ScriptEngine(); var result = engine.Evaluate("(function() { " + script + " return spect; })()"); var json = JSONObject.Stringify(engine, result); Console.WriteLine(json); Console.ReadKey(); 

输出:

[[ “回火”, “初始化”,[]],[ “FW / lib中”, “初始化”,[{ “staticRoot”: “// site.com/js/”}]],[“cap”, “DM”,[{ “tackmod”: “轮廓”, “XMOD”: “定时”}]]]

注意:我没有考虑错误或其他任何问题,这仅仅是作为如何获取脚本并评估spect值的示例。

还有一些其他库用于执行/评估JavaScript。