как мне получить постоянно меняющееся значение из строки c#

StackOverflow https://stackoverflow.com/questions/1816159

  •  08-07-2019
  •  | 
  •  

Вопрос

Я работаю над программой, которая автоматически получит статистику ваших персонажей и еще много чего из арсенала wow.У меня уже есть html, и я могу определить, где находится строка, но мне нужно получить значение "this.effective", которое в данном случае равно 594.Но поскольку он всегда меняется (как и другие значения), я не могу просто занять в нем определенную позицию.Буду очень признателен за любую помощь.

Спасибо

Мэтт --------- Это фрагмент html-кода:

    function strengthObject() {
        this.base="168";
        this.effective="594";
        this.block="29";
        this.attack="1168";

this.diff=this.effective - это.base;


Это было полезно?

Решение

Вы можете сделать это с помощью регулярных выражений:

using System;
using System.Text.RegularExpressions;

class Program
{
    public static void Main()
    {
        string html = @"        function strengthObject() {
                this.base=""168"";
                this.effective=""594"";
                this.block=""29"";
                this.attack=""1168"";";

        string regex = @"this.effective=""(\d+)""";

        Match match = Regex.Match(html, regex);
        if (match.Success)
        {
            int effective = int.Parse(match.Groups[1].Value);
            Console.WriteLine("Effective = " + effective);
            // etc..
        }
        else
        {
            // Handle failure...
        }
    }
}

Другие советы

Гораздо проще извлечь информацию из XML-версии веб-сайта.

Если вы сделаете запрос на подобный URL-адрес (только с допустимым символьным именем), то получите обратно XML-документ, из которого можно легко извлечь данные с помощью анализатора XML.

http://eu.wowarmory.com/character-sheet.xml?r=Nordrassil&cn=Someone

URL-адреса совпадают с теми, которые вы видите в своем веб-браузере.

Пожалуйста, обратите внимание, однако, что вы ДОЛЖНЫ установить пользовательский агент поле запроса должно быть полем поддерживаемого браузера, который поддерживает XML-версию файла, или вместо этого вы получите обратно HTML.Я использую "Mozilla / 5.0 Firefox / 2.0.0.1" в качестве пользовательского агента в моей программе, и это работает нормально.

О, также не делайте более нескольких запросов в секунду или в среднем более одного запроса каждые 3-4 секунды, иначе сайт заблокирует ваш IP на несколько часов ...

Одним из способов было бы использовать регулярное выражение для извлечения этого значения из исходного кода HTML:

this.effective="(\d+)"

Обратите внимание, что очистка HTML-кода не является идеальным решением (например, оно может прерваться при изменении формата HTML), однако я не знаю о "wow armory" и о том, какие другие способы существуют для получения этой информации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top