HTML 민첩성 팩은 페이지에 모든 앵커의 href 속성을 가져옵니다.

c# html-agility-pack

문제

HTML 파일에서 추출 된 링크를 CheckBoxList ( cbl_items )에 추가하려고합니다.

지금까지는 작동하지만 링크 대신 항목의 이름이 HtmlAgilityPack.HtmlNode로 표시됩니다. Node 대신 DocumentElement 를 사용하여 시도했지만 존재하지 않거나 유사하지 않습니다.

HtmlAgilityPack.HtmlNode 대신 URL을 표시하려면 어떻게해야합니까?

이것은 내가 지금까지 시도한 것이다 :

HtmlWeb hw = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc = hw.Load(tb_url.Text);
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
{
  cbl_items.Items.Add(link);
}

수락 된 답변

CheckBoxList HtmlNode 객체 를 추가하고 href 속성의 값은 추가하지 않습니다. HtmlNodeToString() 값은 CheckBoxList 가 해당 객체를 표시하기 위해 수행 할 수있는 최상의 결과이기 때문에 표시되는 값입니다.

대신 GetAttributeValue(string attribute, string defaultValue) 를 사용하여 href 속성 값을 검색 할 수 있습니다.

HtmlWeb hw = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc = hw.Load(tb_url.Text);
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
{
    // Get the value of the HREF attribute
    string hrefValue = link.GetAttributeValue( "href", string.Empty );
    cbl_items.Items.Add(hrefValue);
}



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