Analyser l'image src avec HTML Agilty Pack

html-agility-pack xpath

Question

Bonjour, j'essaie d'analyser une page Web avec HTML Agilty Pack pour obtenir le src d'une image. C'est la structure de la page.

<div class="post_body"> 
    <div style="text-align: center;"> 
        <a href="http://www.engadget.com/2012/02/29/qualcomm-windows-8/">
            <img src="http://www.blogcdn.com/www.engadget.com/media/2012/02/201202297192-1330536971.jpg" style="border-width: 0px; border-style: solid; margin: 4px;">
        </a>
    </div>
<div>

Maintenant, je me sers de ce code pour essayer d’obtenir le src

HtmlWeb hw = new HtmlWeb();
            HtmlDocument doc = hw.Load("http://www.engadget.com/2012/02/29/qualcomm-windows-8");

            HtmlNode baseNode = doc.DocumentNode.SelectSingleNode("//div[@class='post_content permalink ']");
            string Description = baseNode.SelectSingleNode("//div[@class='post_body']").InnerText.Replace("\n", "").Replace("\r", "").Trim();

            string href = baseNode.SelectSingleNode("//div[@class='post_body']//img[@src]").InnerText;

Cependant, la chaîne est toujours renvoyée null: /

Des idées peut-être que j'ai une mauvaise expression de xpath?

Réponse acceptée

Des idées peut-être que j'ai une mauvaise expression de xpath?

Oui, il y a quelques problèmes:

//div[@class='post_content permalink ']

Cela ne sélectionne rien, car dans le document fourni, il n'y a pas de div avec attribut class , dont la valeur est 'post_content permalink '

SelectSingleNode("//div[@class='post_body']//img[@src]").InnerText;  

L'élément img , même si tel est trouvé, n'a pas d'enfants - donc pas de innerText .

Solution :

Vous voulez quelque chose comme ça:

HtmlNode  img = doc.DocumentNode.SelectSingleNode(//div[@class='post_body']//img[@src])

String srcUrl = img.Attributes["src"].Value;



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