Analyser la documentation HTML avec HtmlAgilityPack-Xpath, RegExp

html-agility-pack xpath

Question

J'essaie d'analyser l'URL de l'image à partir de HTML avec HtmlAgilityPack. Dans html doc j'ai img tag:

<a class="css_foto" href="" title="Fotka: MyKe015">
   <span>
      <img src="http://213.215.107.125/fotky/1358/93/v_13589304.jpg?v=6" 
           width="176" height="216" alt="Fotka: MyKe015" />
   </span>
</a>

Je dois obtenir de cette balise img atribute src. J'ai besoin de ceci: http://213.215.107.125/fotky/1358/93/v_13589304.jpg?v=6.

Je sais ça:

  1. Src atribute composé url, l’url commence par http://213.215.107.125/fotky
  2. Je sais que la valeur de alt atribute Url a une longueur variable et que le doc html est constitué d'autres balises img avec url, qui commencent par http://213.215.107.125/fotky
  3. Je connais l'attribut alt de la balise img (Fotka: Myke015))

Toute avance, j'essaie de nombreuses façons, mais rien ne fonctionne bien.

Dernière j'essaye ceci:

    List<string> src;

    var req = (HttpWebRequest)WebRequest.Create("http://pokec.azet.sk/myke015");
    req.Method = "GET";

    using (WebResponse odpoved = req.GetResponse())
    {
        var htmlDoc = new HtmlAgilityPack.HtmlDocument();
        htmlDoc.Load(odpoved.GetResponseStream());

        var nodes = htmlDoc.DocumentNode.SelectNodes("//img[@src]");
        src = new List<string>(nodes.Count);

        if (nodes != null)
        {
            foreach (var node in nodes)
            {
                if (node.Id != null)
                    src.Add(node.Id);
            }
        }
    }

Réponse populaire

Votre XPath sélectionne les noeuds img , pas les attributs src qui leur appartiennent.

Au lieu de (en sélectionnant toutes les balises d'image ayant un attribut src ):

var nodes = htmlDoc.DocumentNode.SelectNodes("//img[@src]");

Utilisez ceci (sélectionnez les attributs src qui sont des nœuds enfants de tous les éléments img ):

var nodes = htmlDoc.DocumentNode.SelectNodes("//img/@src");


Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi