C # HTML 민첩성 팩 (not / wrong) 노드 컬렉션을 반복

c# collections foreach html-agility-pack

문제

메신저 웹 페이지에서 URL을 가져 오기 위해 HTML 민첩성 팩을 사용합니다. URL은 다음과 같습니다.

http://goo.gl/DqfQl

아래 코드를 사용하면 원하는 링크를 얻을 수 있습니다.

String html = getHtml("http://goo.gl/DqfQl");

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();

doc.LoadHtml(html);

HtmlNodeCollection address_rows = doc.DocumentNode.SelectNodes("//div[@class='name']/a"); 

foreach (HtmlNode row in address_rows)
{
    MessageBox.Show(row.GetAttributeValue("href",LINK_NOT_FOUND));
}

하지만 HtmlNodeCollection 을 변경하여 class="row' containg div 를 가져 오면 URL을 가져오고 싶습니다. 항상 첫 번째 URL을 가져옵니다.

String html = getHtml("http://goo.gl/DqfQl");

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();

doc.LoadHtml(html);

HtmlNodeCollection address_rows = doc.DocumentNode.SelectNodes("//div[@class='name']/a"); 

foreach (HtmlNode row in address_rows)
{
    MessageBox.Show(row.GetAttributeValue("href",LINK_NOT_FOUND));
}

나는이 코드로 조금 연주했고, 잠시 동안 나는 생각했다. 하지만 이제는 두 번째 코드 스 니펫을 사용하여 원하는 모든 URL을 선택하지 않습니다. 도울 수 있니?

수락 된 답변

점을 추가해야합니다. " 그렇지 않으면 XPath는 문서의 시작 부분에서 일치하고 노드 내부에서는 일치하지 않을 것입니다.

두 번째 문자열을 ".//div[@class='name']/a" 로 변경하면 효과가 있습니다.




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