Как я могу получить всегда изменяющееся значение из строки C # - PullRequest
0 голосов
/ 29 ноября 2009

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

Спасибо

Matt --------- Это HTML-фрагмент:

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

this.diff = this.effective - this.base;


Ответы [ 3 ]

1 голос
/ 29 ноября 2009

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

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...
        }
    }
}
1 голос
/ 04 января 2010

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

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

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

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

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

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

0 голосов
/ 29 ноября 2009

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

this.effective="(\d+)"

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

...