Pars Image src mit HTML Agilty Pack

html-agility-pack xpath

Frage

Hallo, ich versuche, eine Webseite mit HTML Agilty Pack zu parsen, um den src eines Bildes zu erhalten. Dies ist die Struktur der Seite.

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

Jetzt benutze ich diesen Code, um den Quellcode zu erhalten

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;

Die Zeichenfolge wird jedoch immer als null zurückgegeben: /

Irgendwelche Ideen vielleicht habe ich einen schlechten xpath Ausdruck?

Akzeptierte Antwort

Irgendwelche Ideen vielleicht habe ich einen schlechten xpath Ausdruck?

Ja, es gibt ein paar Probleme:

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

Dies wählt nichts aus, weil in dem bereitgestellten Dokument kein div Attribut mit class , dessen Wert 'post_content permalink '

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

Das img Element, selbst wenn es gefunden wird, hat keine Kinder - also keinen innerText .

Lösung :

Du willst so etwas:

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

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


Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum