Parse image src con HTML Agilty Pack

html-agility-pack xpath

Pregunta

Hola, así que estoy tratando de analizar una página web con HTML Agilty Pack para obtener el src de una imagen. Esta es la estructura de la página.

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

Ahora estoy usando este código para intentar obtener el 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;

Sin embargo, la cadena siempre se devuelve nula: /

¿Alguna idea tal vez tengo una mala expresión xpath?

Respuesta aceptada

¿Alguna idea tal vez tengo una mala expresión xpath?

Sí, hay algunos problemas:

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

Esto no selecciona nada, porque en el documento proporcionado no hay un div con atributo de class , cuyo valor es 'post_content permalink '

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

El elemento img , incluso si se encuentra, no tiene hijos, por lo tanto no tiene texto innerText .

Solución :

Quieres algo como esto:

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

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



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué