【问题标题】:How to extract attribute value that is within script tags?如何提取脚本标签内的属性值?
【发布时间】:2017-03-09 11:30:54
【问题描述】:

常规

我目前正在使用 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。但同样,没有像我希望的那样工作。

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

我的代码的 sn-p,只是为了清楚起见:

    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 才能做我想做的事,我很乐意接受这个建议。

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 我去看看!
    猜你喜欢
    • 2017-09-26
    • 1970-01-01
    • 2012-01-07
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    • 2016-10-06
    相关资源
    最近更新 更多