HTML Agility Pack在頁面上獲取所有錨點的href屬性

c# html-agility-pack

我試圖將從HTML文件中提取的鏈接添加到CheckBoxListcbl_items )。

它到目前為止工作但不是鏈接,項目的名稱顯示為HtmlAgilityPack.HtmlNode。我嘗試使用DocumentElement而不是Node但它說它不存在或類似。

如何才能顯示URL而不是HtmlAgilityPack.HtmlNode?

這是我到目前為止所嘗試的:

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);
}

一般承認的答案

您正在將HtmlNode 對象添加到CheckBoxList而不是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合法嗎? 是的,了解原因