HtmlAgilityPack을 사용하여 특정 DIV의 항목 만 선택

c# html-agility-pack

문제

HtmlAgilityPack을 사용하여 <div class='content'> 로 선언 된 div 내에 포함 된 페이지의 모든 링크를 가져 오려고합니다. 그러나 아래 코드를 사용하면 전체 페이지에서 모든 링크를 가져옵니다. . 이전에 선택한 하위 노드에서 SelectNodes를 호출하고 있기 때문에 이것은 실제로 이해가되지 않습니다 (디버거에서 볼 때 특정 div의 HTML 만 표시). SelectNodes를 호출 할 때마다 바로 루트 노드로 돌아가는 것처럼 보입니다. 내가 사용하는 코드는 아래와 같습니다.

HtmlWeb hw = new HtmlWeb();
HtmlDocument doc = hw.Load(@"http://example.com");
HtmlNode node = doc.DocumentNode.SelectSingleNode("//div[@class='content']");
foreach(HtmlNode link in node.SelectNodes("//a[@href]"))
{
    Console.WriteLine(link.Value);
}

이것은 예상 된 행동입니까? 그렇다면 어떻게하면 내가 기대하는대로 할 수 있을까요?

수락 된 답변

이것은 작동 할 것이다 :

node.SelectNodes("a[@href]")

또한 단일 선택기에서 수행 할 수 있습니다.

node.SelectNodes("a[@href]")

또한,주의 link.Value 정의되지 HtmlNode 코드가 컴파일되지 않도록.




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