HTML Agility Pack get all anchors' href attributes on page

試著忘記壹切 提交于 2019-11-29 16:35:07

问题


I am trying to add links extracted from an HTML file to a CheckBoxList (cbl_items).

It works so far but instead of the link, the item's name is displayed as HtmlAgilityPack.HtmlNode. I tried using DocumentElement instead of Node but it said that it does not exist or similar.

How can I get the URL to be displayed instead of HtmlAgilityPack.HtmlNode?

This is what I've tried so far:

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

回答1:


You are adding the HtmlNode object to the CheckBoxList and not the value of the href attribute. What you are seeing is the HtmlNode's ToString() value since that's the best that the CheckBoxList can do to display that object.

Instead, you can use GetAttributeValue(string attribute, string defaultValue) to retrieve the href attribute's value.

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


来源:https://stackoverflow.com/questions/25688847/html-agility-pack-get-all-anchors-href-attributes-on-page

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!