从html文件中获取javascript代码

本文关键字:javascript 代码 获取 html 文件 | 更新日期: 2023-09-27 18:00:23

我正试图使用C#和正则表达式从html文件中获取javascript代码。我现在使用的代码如下:

string js = Regex.Replace(code, @"^.*?'<script's?.*?'>((.|'r'n)+?)'<'/script'>.*$", "$1", RegexOptions.Multiline);

但当我使用它时,我会得到完整的html代码,其中去掉了脚本标记。

有人能帮我吗?


我现在使用html敏捷包,代码如下:

var hwObject = new HtmlWeb();
        HtmlDocument doc = new HtmlDocument();
        doc.LoadHtml(code);
        foreach (var script in doc.DocumentNode.Descendants("script").ToArray())
        {
            string js = script.InnerText;
            HtmlTextNode text = (HtmlTextNode)script.ChildNodes.Single(d => d.NodeType == HtmlNodeType.Text);
            text.Text = TrimJs(js);
        }

但只有最后一个脚本标记被替换。之前的javascript就这样消失了。

从html文件中获取javascript代码

您应该看看Html敏捷包。

使用基于xml的解析器解析HTML通常比使用正则表达式容易得多。

你可以使用这样的东西:

HtmlWeb hwObject = new HtmlWeb();
HtmlDocument htmldocObject = hwObject.Load("http://www...");
foreach(var script in doc.DocumentNode.Descendants("script").ToArray()) 
{ 
    string s = script.InnerText;
    // Modify s somehow
    HtmlTextNode text = (HtmlTextNode)script.ChildNodes
                        .Single(d => d.NodeType == HtmlNodeType.Text);
    text.Text = s;
}
htmldocObject .Save("file.htm");

您需要删除"^.*?"".*$",因为这就是包含所有内容的原因,并且在查找子字符串时没有理由使用Replace。使用Regex即可。比赛方法和你应该很好去。

删除.*(使用以下正则表达式:'<script's?.*?'>((.|'r'n)+?)'<'/script'>