2016-10-26 4 views
3

ОбщиеКак извлечь значение атрибута в теги скрипта?

Сейчас я играю с 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 и Юра. Но опять же, не работая, как я надеялся.

Я могу извлечь текстовый фрагмент, что в теге скрипта, но мне явно нужно получить 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, чтобы сделать то, что я хочу, я с радостью принимаю этот совет.

Но я бы предпочел ответ, который я могу использовать немедленно.

ответ

0

Что делать, если вы попытаетесь разобрать источник страницы (вы можете легко получить это с помощью Selenium webdriver, а затем применить некоторое регулярное выражение для извлечения нужного вам значения)?

+0

Я посмотрю! – pat3d3r