HTML Agilty Pack으로 이미지 src 파싱

html-agility-pack xpath

문제

안녕하세요, 그래서 이미지의 src를 얻으려면 HTML Agilty Pack을 사용하여 웹 페이지를 구문 분석하려고합니다. 이것은 페이지의 구조입니다.

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

이제이 코드를 사용하여 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;

그러나 문자열은 항상 null이 반환됩니다 : /

모든 아이디어가 어쩌면 내가 나쁜 xpath 표현을 가지고?

수락 된 답변

모든 아이디어가 어쩌면 내가 나쁜 xpath 표현을 가지고?

예, 몇 가지 문제가 있습니다.

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

이것은 제공된 문서에서 class 속성이있는 div 가 없기 때문에 아무 것도 선택하지 않습니다. 그 값은 'post_content permalink '

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

img 요소는 발견 되더라도 자식이 없으므로 innerText 가 없습니다.

해결책 :

당신은 다음과 같은 것을 원한다.

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

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


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.