如何提取脚本标记中的属性值

本文关键字:属性 脚本 何提取 提取 | 更新日期: 2023-09-27 18:15:13

常规

我目前正在使用HTML和Javascript,以便将网站不断变化的价值(温度、股票价值、货币汇率…(用于C#应用程序。

(我有意忽略不清楚的法律情况。(

规格

我有一个网站和它的源代码。我想要的值在脚本标记中。

<script type="text/ng-template" id="TmplLiveEventDetails">
    <div class="lii-progress">
        <span ng-bind="liveEvent.eventStateText"></span> <strong class="m-liveGameTime{{::liveEvent.id}}"></strong><br/>
<!--code goes on here...-->

我想使用类的值

m-liveGameTime

在我的C#应用程序中。

到目前为止我尝试了什么

我从HtmlAgilityPack和XPath开始,但我花了一些时间才发现它不适用于JavaScript。然后我关注了这篇文章,其中使用了HtmlAgilityPack和Jurassic。但同样,没有像我希望的那样工作。

我可以用纯文本提取script标记中的内容,但我显然需要获得HTML,而不是通过HtmlAgilityPack,而是首先评估Javascript表达式。

我的代码片段,只是为了清楚起见:

    string url = "http://www.somewebsite.com";
    HtmlWeb web = new HtmlWeb();
    HtmlDocument document = web.Load(url);
    string scriptContent = document.DocumentNode.Descendants()
                          .Where(n => n.Id == "TmplLiveEventDetails")
                          .First().InnerHtml;

    var engine = new Jurassic.ScriptEngine();
    var result = engine.Evaluate("function() {" + scriptContent + " return m-liveGameTime4902493; })()");

注意事项

我完全是HTML和Javascript的初学者,这确实是一个尝试一些东西的短期项目。如果答案是我需要先全面研究HTML和Javascript才能做我想做的事情,我很乐意接受这个建议。

但我更喜欢一个可以立即使用的答案。

如何提取脚本标记中的属性值

如果您尝试解析页面源代码(使用Selenium网络驱动程序可以很容易地获得,然后在其上应用一些正则表达式来提取所需的值(,该怎么办?