2010-11-02 22 views
1

J'essaye d'analyser l'URL de l'image depuis html avec HtmlAgilityPack. En html doc j'ai img tag:Parse HTML doc avec HtmlAgilityPack-Xpath, RegExp

<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 à partir de cet img tag atribute src. J'ai besoin de cela: http://213.215.107.125/fotky/1358/93/v_13589304.jpg?v=6.

Je sais ceci:

  1. Src consiste atribute url, url commencer avec http://213.215.107.125/fotky
  2. Je sais que valeur alt atribute Url ont variables longueur et aussi doc html se composent d'autres balises img avec l'URL, qui commencent par http://213.215.107.125/fotky
  3. Je sais attribut alt de la balise img (Fotka: Myke015))

Toute avance, j'essaie bien des égards, mais rien ne fonctionne bien.

dernière, j'essayer 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épondre

3

Votre XPath sélectionne les img nœuds, et non les src attributs qui leur appartiennent.

au lieu de (sélectionner tous les tags d'images qui ont un src attribut):

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

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

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

Oded, comment puis-je spécifier dans Xpath v aleur de src atribute. src = "Fotka: miky015" – Tom

+0

@Lucas - à ce stade, vous pouvez utiliser 'node.InnerText' pour obtenir la valeur. – Oded

+0

Oded J'utilise votre advace, mais j'obtiens une erreur: '// img @ src' a un jeton invalide, si j'ai utilisé votre exp Xpath "// img @ src". – Tom

0

Cette Expression XPath 1.0:

//a[@alt='Fotka: MyKe015']/@src