Domanda

Sto lavorando a un programma che otterrà automaticamente le statistiche dei tuoi personaggi e quant'altro dall'armeria wow. Ho già l'html e posso identificare dove si trova la stringa, ma ho bisogno di ottenere il " this.effective " valore, che in questo caso è 594. Ma dal momento che è in continua evoluzione (e lo sono anche gli altri valori, non posso prenderlo in una certa posizione. Qualsiasi aiuto sarebbe molto apprezzato.

Grazie

Matt --------- Questo è lo snippet html:

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

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


È stato utile?

Soluzione

Puoi farlo usando le espressioni regolari:

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

Altri suggerimenti

È molto più facile estrarre le informazioni dalla versione XML del sito Web.

Se si effettua una richiesta a un URL come questo (solo con un nome di carattere valido), si ottiene un documento XML che è possibile utilizzare un parser XML per estrarre facilmente i dati.

http://eu.wowarmory.com/character-sheet .xml r = Nordrassil & amp;? CN = qualcuno

Gli URL sono gli stessi che vedi nel tuo browser web.

Nota che DEVI impostare il campo User Agent della richiesta in modo che corrisponda a quello di un browser supportato che supporta la versione XML del file o ottieni invece HTML. Uso " Mozilla / 5.0 Firefox / 2.0.0.1 " come agente utente nel mio programma e funziona bene.

Oh, inoltre, non fare più di alcune richieste al secondo, o una media di più di una richiesta ogni 3 o 4 secondi o il sito blocca il tuo IP per alcune ore ...

Un modo sarebbe usare un'espressione regolare per estrarre questo valore dalla fonte HTML:

this.effective="(\d+)"

Nota che lo scraping HTML non è una soluzione ideale (ad esempio, potrebbe rompersi quando cambia il formato dell'HTML), tuttavia non conosco il "wow arsenale"; e quali altri modi ci sono per ottenere queste informazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top