Frage

Ich arbeite an einem Programm, das Ihre Charaktere Statistiken automatisch erhalten wird und so weiter aus dem wow Rüstkammer. Ich habe bereits die html, und ich kann erkennen, wo der String ist, aber ich brauche die „this.effective“ Wert zu erhalten, die in diesem Fall ist 594. Da aber seine immer wechselnden (und so sind die anderen Werte, ich kippe nehmen sie nur eine bestimmte Position. Jede Hilfe wäre sehr geschätzt.

Danke

Matt --------- Dies ist der HTML-Schnipsel:

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

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


War es hilfreich?

Lösung

Sie können es mit regulären Ausdrücken:

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...
        }
    }
}

Andere Tipps

Es ist viel einfacher, die Informationen aus der XML-Version der Website zu extrahieren.

Wenn Sie eine Anforderung an eine URL wie folgt aus (nur mit einem gültigen Zeichen Name) machen Sie dann ein XML-Dokument zurück, das Sie einen XML-Parser leicht verwenden können, um die Daten zu extrahieren.

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

Die URLs sind die gleichen wie die, die Sie in Ihrem Web-Browser zu sehen.

Bitte beachten Sie aber, dass Sie den User Agent setzen müssen Feld der Anforderung, dass von einem unterstützten Browser zu sein, die die XML-Version der Datei unterstützt oder Ihnen in Verbindung setzen HTML statt. Ich benutze "Mozilla / 5.0 Firefox / 2.0.0.1" als User-Agent in meinem Programm und es funktioniert gut.

Oh, macht auch nicht mehr als ein paar Anfragen in der zweiten oder einen Durchschnitt von mehr als eine Anfrage alle 3 oder 4 Sekunden der Website blockiert Ihre IP für ein paar Stunden ...

Eine Möglichkeit wäre, einen regulären Ausdruck zu verwenden, diesen Wert aus der HTML-Quelle zu extrahieren:

this.effective="(\d+)"

Beachten Sie, dass HTML Schaben keine ideale Lösung ist (zum Beispiel kann es brechen, wenn das Format der HTML-Änderungen) aber ich weiß nicht, über die „wow Rüstkammer“ und welche anderen Möglichkeiten es gibt, diese Informationen zu erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top