Comment puis-je obtenir une valeur en constante évolution à partir d'une chaîne c #

StackOverflow https://stackoverflow.com/questions/1816159

  •  08-07-2019
  •  | 
  •  

Question

Je travaille sur un programme qui obtiendra automatiquement les statistiques de vos personnages, et cetera, de l'armurerie wow. J'ai déjà le code HTML, et je peux identifier où se trouve la chaîne, mais je dois obtenir le "this.effective". valeur, qui dans ce cas est 594. Mais comme elle change constamment (et les autres valeurs aussi, je ne peux pas simplement prendre une certaine position. Toute aide serait grandement appréciée.

Merci

Matt --------- Voici l'extrait de code HTML:

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

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

Était-ce utile?

La solution

Vous pouvez le faire en utilisant des expressions régulières:

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

Autres conseils

Il est beaucoup plus facile d'extraire les informations de la version XML du site Web.

Si vous faites une demande à une URL telle que celle-ci (uniquement avec un nom de caractère valide), vous récupérez un document XML que vous pouvez utiliser avec un analyseur XML pour extraire facilement les données.

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

Les URL sont les mêmes que celles que vous voyez dans votre navigateur Web.

Notez cependant que vous DEVEZ définir le champ Agent d'utilisateur de la demande sur celui d'un navigateur pris en charge qui prend en charge la version XML du fichier. Sinon, vous récupérez le code HTML. J'utilise " Mozilla / 5.0 Firefox / 2.0.0.1 " en tant qu'agent utilisateur dans mon programme et cela fonctionne bien.

Oh, ne faites pas non plus plus que quelques requêtes en une seconde, ou plus de une requête en moyenne toutes les 3 ou 4 secondes, sinon le site bloque votre adresse IP pendant quelques heures ...

Une solution consiste à utiliser une expression régulière pour extraire cette valeur de la source HTML:

this.effective="(\d+)"

Notez que le récurage HTML n'est pas une solution idéale (par exemple, il peut se casser lorsque le format du format HTML change), mais je ne connais pas le "wow armory". et quels autres moyens pour obtenir cette information.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top