You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用HtmlAgilityPack获取JavaScript函数内的Innerhtml值

操作方法

核心思路

先通过HtmlAgilityPack定位到包含目标JS的script节点拿到文本内容,再通过正则匹配提取硬编码在JS里的三个目标值。

实现步骤

  • 第一步:加载HTML文档,用XPath筛选出包含set_rate函数的<script>节点,取出节点内的JS文本。
  • 第二步:编写对应正则表达式,匹配三个赋值语句中双引号包裹的内容。

可直接运行的代码示例

首先确保你已经安装了HtmlAgilityPack库,之后参考以下C#代码实现:

using HtmlAgilityPack;
using System;
using System.Text.RegularExpressions;

public class JsValueExtractor
{
    public static void ExtractValues(string htmlContent)
    {
        // 加载HTML文档
        HtmlDocument htmlDoc = new HtmlDocument();
        htmlDoc.LoadHtml(htmlContent);

        // 定位目标script节点
        HtmlNode targetScript = htmlDoc.DocumentNode.SelectSingleNode("//script[contains(text(), 'function set_rate')]");
        if (targetScript == null)
        {
            Console.WriteLine("未找到目标script节点");
            return;
        }
        string jsText = targetScript.InnerText;

        // 正则提取三个值
        Match rateCMatch = Regex.Match(jsText, @"\$\('#rate_c'\)\.html\(""([^""]+)""\)");
        Match rateGMatch = Regex.Match(jsText, @"\$\('#rate_g'\)\.html\(""([^""]+)""\)");
        Match timeMatch = Regex.Match(jsText, @"\$\('#time'\)\.html\(""([^""]+)""\)");

        // 输出结果,实际使用可按需要转换类型(比如把汇率转成decimal)
        if (rateCMatch.Success) Console.WriteLine($"rate_c值:{rateCMatch.Groups[1].Value}");
        if (rateGMatch.Success) Console.WriteLine($"rate_g值:{rateGMatch.Groups[1].Value}");
        if (timeMatch.Success) Console.WriteLine($"时间值:{timeMatch.Groups[1].Value}");
    }
}

注意事项

  • 如果你页面中存在多个script标签,可以给XPath增加更严格的筛选条件,比如//script[@type='text/javascript' and contains(text(), 'set_rate')],避免匹配到无关节点。
  • 正则里的[^""]+规则只会匹配双引号之间的内容,只要JS代码结构不变,提取结果不会出现偏差。

内容的提问来源于stack exchange,提问作者abhay9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 23:09:03