获取 href 属性值时 HTMLAgilityPack 中的错误。 C#
Bug in HTMLAgilityPack when getting href attribute value. C#
在 HTMLAgilityPack 中发现了一个讨厌的错误,其中一些属性值没有完全返回 - 它们被截断了。具体来说,当尝试从锚标记中获取 href 值时,仅返回根域,完全忽略后面的任何内容(查询字符串)。有人知道好的解决方法吗?
示例:
node.SelectSingleNode("//link").Attributes["href"].Value
returns https://www.example.com
而不是返回 https://www.example.com/mypage.php?_src=ffk_title&ffkid=66534&site=data:http%3A%2F%2Fwww.othersite.com%2Frss%2F
link 看起来像这样
<a class="tlink" href="https://www.example.com/mypage.php?_src=ffk_title&ffkid=66534&site=data:http%3A%2F%2Fwww.othersite.com%2Frss%2F" target="_blank">Click to get feed</a>
无论如何 - 现在,我将只获取 link 标记并使用旧方法进行解析 - 我认为如果 href 标记中有非典型字符,HTMLAgilityPack 会感到困惑。我希望这只是我做错了什么,但这种怪癖真的很伤人。
对于锚标签,您应该使用 //a
XPath 表达式:
node.SelectSingleNode("//a").Attributes["href"].Value;
此外,如果您需要引用具有特定 class 的锚点,您可以使用:
node.SelectSingleNode("//a[@class='tlink']").Attributes["href"].Value;
一个工作示例似乎是 here。
在 HTMLAgilityPack 中发现了一个讨厌的错误,其中一些属性值没有完全返回 - 它们被截断了。具体来说,当尝试从锚标记中获取 href 值时,仅返回根域,完全忽略后面的任何内容(查询字符串)。有人知道好的解决方法吗?
示例:
node.SelectSingleNode("//link").Attributes["href"].Value
returns https://www.example.com 而不是返回 https://www.example.com/mypage.php?_src=ffk_title&ffkid=66534&site=data:http%3A%2F%2Fwww.othersite.com%2Frss%2F
link 看起来像这样
<a class="tlink" href="https://www.example.com/mypage.php?_src=ffk_title&ffkid=66534&site=data:http%3A%2F%2Fwww.othersite.com%2Frss%2F" target="_blank">Click to get feed</a>
无论如何 - 现在,我将只获取 link 标记并使用旧方法进行解析 - 我认为如果 href 标记中有非典型字符,HTMLAgilityPack 会感到困惑。我希望这只是我做错了什么,但这种怪癖真的很伤人。
对于锚标签,您应该使用 //a
XPath 表达式:
node.SelectSingleNode("//a").Attributes["href"].Value;
此外,如果您需要引用具有特定 class 的锚点,您可以使用:
node.SelectSingleNode("//a[@class='tlink']").Attributes["href"].Value;
一个工作示例似乎是 here。