c# - 获取 href 属性值时 HTMLAgilityPack 中的错误。C#
问题描述
在 HTMLAgilityPack 中发现了一个令人讨厌的错误,其中某些属性值未完全返回 - 它们被截断。具体来说,当尝试从锚标记中获取 href 值时,仅返回根域,后面的任何内容(查询字符串)都将被完全忽略。有人知道一个好的解决方法吗?
例子:
node.SelectSingleNode("//link").Attributes["href"].Value
返回 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
链接看起来像这样
<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>
无论如何-现在,我将只获取链接标记并使用旧方法进行解析-我认为如果 href 标记中有非典型字符,HTMLAgilityPack 会感到困惑。我希望这只是我做错了,但这种怪癖真的很伤人。
解决方案
对于锚标记,您应该使用//a
XPath 表达式:
node.SelectSingleNode("//a").Attributes["href"].Value;
此外,如果您需要引用具有特定类的锚点,您可以使用:
node.SelectSingleNode("//a[@class='tlink']").Attributes["href"].Value;
一个可行的例子可以看这里。
推荐阅读
- python - Python中的非二叉树数据结构
- angular - 在导航侧边栏中,Angular Material CDK Overlay 滚动块不起作用
- flutter - Flutter:ListView:当子 ListView 到达底部时滚动父 ListView - ClampingScrollPhysics 在大小容器中不起作用
- mysql - 在 IN() 条件中混合引用和未引用的值 - MySQL 怪癖或一般问题?
- typescript - 如何在给定枚举值的情况下指定同级字段类型?
- python - 填充和注意掩码在 GPT 语言模型的批量输入中无法按预期工作
- java - Modern Java in Action 中有关 java 流 dropWhile 示例的问题
- android - 命令:`react-native run-android` 挂在“信息正在启动 JS 服务器...”
- python - 如何使用 python 子进程执行命令并响应多个输入?
- c# - 你可以在 Razor 页面中使用点表示法和 ViewData 吗?