HTML Agility Pack을 사용하여 다음 요소 선택

c# html html-agility-pack

문제

HTML 민첩성 팩을 사용하고 하위 h4 요소에 "RelayClinical Patient Education with Animations Install zip" class="fileHeader" 가있는 div class="fileHeader" 를 검색합니다. 일단 발견되면, 특정 블록의 앵커 태그 안에 "href" 속성을 포착하려고합니다. 그것을 어떻게 얻을 수 있습니까?

HTML 소스

<div class="fileHeader" id="fileHeader_7311111">
    <h4 class="collapsed">RelayClinical Patient Education with Animations Install zip</h4>
    <div class="defaultMethod">
        <a class="buttonGrey" href="https://mckc-esd.subscribenet.com/cgi-bin/download?rid=2511740931&amp;rp=DTM20130905162949MzcyODIwNjM0" title="Clicking this link will open a new window." rel="noreferrer">
            HTTPS Download
        </a>
    </div>
</div>

암호

<div class="fileHeader" id="fileHeader_7311111">
    <h4 class="collapsed">RelayClinical Patient Education with Animations Install zip</h4>
    <div class="defaultMethod">
        <a class="buttonGrey" href="https://mckc-esd.subscribenet.com/cgi-bin/download?rid=2511740931&amp;rp=DTM20130905162949MzcyODIwNjM0" title="Clicking this link will open a new window." rel="noreferrer">
            HTTPS Download
        </a>
    </div>
</div>

수락 된 답변

h4 요소를 선택하는 대신 a 요소를 직접 선택하십시오. 그런 다음 href 속성을 가져올 수 있습니다.

var h4Text = "RelayClinical Patient Education with Animations Install zip";
var xpath = String.Format(
    "//div[@class='fileHeader' and h4='{0}']/div[@class='defaultMethod']/a",
    h4Text
);
var anchor = doc.DocumentNode.SelectSingleNode(xpath);
if (anchor != null)
{
    var attr = anchor.GetAttributeValue("href", null);
    // do stuff with attr
}



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