c# - HTML Agility Pack 获取页面上所有 anchor 的 href 属性

标签 c# html-agility-pack

我正在尝试将从 HTML 文件中提取的链接添加到 CheckBoxList (cbl_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);
}

关于c# - HTML Agility Pack 获取页面上所有 anchor 的 href 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25688847/

相关文章:

c# - 使用 C# 将数据添加到我的 Sql 数据时出现 "Procedure expects parameter which was not supplied"错误

javascript - Chrome Native Messaging API chrome.runtime.connectNative 不是函数

c# - src等属性如何防范XSS攻击?

html-agility-pack - 无法使用 Html-Agility-Pack 设置 InnerText

c# - 如何在 Html Agility 包中获取重定向 URL

c# - 如何在 .net 中生成 UTF-8 字符集中的所有字符

c# - 抽象类的嵌套列表<>属性

c# - 是否可以在单个 LINQ 查询中完成所有这些操作?

c# - 如何使用 HtmlAgilityPack 获取表单中的所有输入元素而不会出现空引用错误