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

时间:2016-10-26 22:59:15

标签: javascript c# html xpath html-agility-pack

常规

我目前正在玩HTML和Javascript,以便为C#应用程序使用网站价值的变化(温度,股票价值,货币汇率......)。

(我故意忽略unclear legal situation。)

具体细节信息

我有一个网站及其源代码。我想要的值在脚本标签内。

<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。 然后我跟着this post,使用了HtmlAgilityPack和Jurassic。但同样,不按我希望的那样工作。

我能够在脚本标签中进行纯文本提取,但我显然需要通过HtmlAgilityPack获取HTML,而不是首先评估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以便做我想做的事情,我很乐意接受这个建议。

但我更喜欢我能立即使用的答案。

1 个答案:

答案 0 :(得分:0)

如果您尝试解析页面源代码(您可以使用Selenium webdriver轻松实现,然后在其上应用一些正则表达式来提取所需的值),该怎么办?