Pregunta

Estoy trabajando en un programa que obtendrá automáticamente las estadísticas de tus personajes y otras cosas del arsenal de wow. Ya tengo el html, y puedo identificar dónde está la cadena, pero necesito obtener el " this.effective " valor, que en este caso es 594. Pero dado que siempre está cambiando (y también lo son los otros valores, no puedo tomar una posición determinada. Cualquier ayuda sería muy apreciada.

Gracias

Matt --------- Este es el fragmento html:

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

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


¿Fue útil?

Solución

Puedes hacerlo usando expresiones regulares:

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

Otros consejos

Es mucho más fácil extraer la información de la versión XML del sitio web.

Si realiza una solicitud a una URL como esta (solo con un nombre de carácter válido), obtiene un documento XML en el que puede usar un analizador XML para extraer fácilmente los datos.

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

Las URL son las mismas que ve en su navegador web.

Sin embargo, tenga en cuenta que DEBE configurar el campo Agente de usuario de la solicitud para que sea el de un navegador compatible que admita la versión XML del archivo o, en su lugar, recupere HTML. Yo uso "Mozilla / 5.0 Firefox / 2.0.0.1" como agente de usuario en mi programa y funciona bien.

Ah, tampoco haga más de unas pocas solicitudes en segundo, o un promedio de más de una solicitud cada 3 o 4 segundos o el sitio bloquea su IP durante unas horas ...

Una forma sería usar una expresión regular para extraer este valor de la fuente HTML:

this.effective="(\d+)"

Tenga en cuenta que el raspado de HTML no es una solución ideal (por ejemplo, puede romperse cuando cambia el formato del HTML), sin embargo, no sé sobre el '' wow armory '' y qué otras formas hay para obtener esta información.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top