Pergunta

Eu estou trabalhando em um programa que irá receber automaticamente seus personagens estatísticas e outros enfeites do wow arsenal. Eu já tenho o html, e eu posso identificar onde a corda é, mas eu preciso para obter o "this.effective" valor, que neste caso é 594. Mas desde a sua sempre mudando (e por isso são os outros valores, não posso basta levá-la uma determinada posição. Qualquer ajuda seria muito apreciada.

Graças

Matt --------- Esta é a html trecho:

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

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


Foi útil?

Solução

Você pode fazer isso usando expressões 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...
        }
    }
}

Outras dicas

É muito mais fácil para extrair as informações da versão XML do site.

Se você fizer um pedido para um URL como esta (apenas com um nome de personagem válido), em seguida, você recebe de volta um documento XML que você pode usar um parser XML para facilmente extrair os dados.

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

As URLs são os mesmos que os que você vê no seu navegador web.

Por favor, note que embora Você deve definir o User Agent campo do pedido ser a de um navegador compatível que suporta a versão XML do arquivo ou você voltar HTML em vez. Eu uso "Mozilla / 5.0 Firefox / 2.0.0.1" como o agente do usuário no meu programa e ele funciona muito bem.

Oh, também não fazem mais do que alguns pedidos em segundo, ou uma média de mais de uma solicitação a cada 3 ou 4 segundos ou os blocos do site O seu IP por algumas horas ...

Uma forma seria a de usar uma expressão regular para extrair esse valor a partir do HTML:

this.effective="(\d+)"

Note que o HTML raspagem não é uma solução ideal (por exemplo, ele pode quebrar quando o formato das mudanças HTML) no entanto eu não sei sobre o "wow arsenal" e que outras formas existem para obter essa informação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top