HTMLAgilityPack을 사용하여 data-url 속성을 가진 요소 선택하기

.net c# html-agility-pack

문제

나는 조금 다운 로보트를 쓰고 있는데, 그것은 자신을 위해 더 낮은 레이어에서 링크를 찾고있다.

내가 찾는 필요한 것은 html 페이지 (.jpg 파일에 대한 링크와 .pgn, .pdf, .html, .... 파일에 대한 링크)의 모든 링크입니다.

나는 html-agilitypack을 사용하여 모든 a-href 링크를 찾는다.

샘플 코드 :

foreach (HtmlNode link in htmlDocument.DocumentNode.SelectNodes("//a[@href]"))
{
    HtmlAttribute attribute = link.Attributes["href"];
    links.Add(attribute.Value);
}

그러나 나는 데이터 URL을 찾고 싶다.

데이터 URL을 찾으려면 어떤 XPath 구문을 사용해야합니까? htmlcode의 예제 data-url :

foreach (HtmlNode link in htmlDocument.DocumentNode.SelectNodes("//a[@href]"))
{
    HtmlAttribute attribute = link.Attributes["href"];
    links.Add(attribute.Value);
}

이 예제에서 "2012 \ edmonton \ partien.pgn"이 필요합니다. XPath 구문을 사용하여 이것을 어떻게 알 수 있습니까?

최고의 인사, 내가 실수를 저질렀다 고 말해줘. 이것은 나의 첫 번째 질문입니다.

수락 된 답변

다음은 당신이 원하는 것을해야합니다 :

foreach (HtmlNode divNode in htmlDocument.DocumentNode.SelectNodes("//div[@data-url]"))
{
    HtmlAttribute attribute = divNode.Attributes["data-url"];
    links.Add(attribute.Value);
}

효과적으로 //div[@data-url] 문은 data-url 속성이있는 모든 노드를 선택해야합니다. 그런 다음이 속성을 제거합니다.

이 속성을 가진 div가 아닌 다른 노드가 있다면, //*[@data-url] 이 트릭을 수행해야합니다.




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