使用 HtmlAgilityPack 查询XPath时,无法兼容 form 标记

oldhunter 2017-12-24 01:38:12
从火狐复制出来的XPath带有 form 标记,这是正常可以理解的一个层次结构:/html[1]/body[1]/form[1]/div[2]/div[5]/div[2]/h1[1]

但 HtmlAgilityPack 对应的该元素的XPath却是:/html[1]/body[1]/div[4]/div[5]/div[2]/h1[1]

经过对比:

/html[1]/body[1]/div[4]/div[5]/div[2]/h1[1] HtmlAgilityPack.HtmlNode.XPath
/html[1]/body[1]/form[1]/div[2]/div[5]/div[2]/h1[1] 火狐XPath

发现 HtmlAgilityPack 除了不带 form,同时 form 中的子元素顺序也发生了变化:div[2] -> div[4]

在我的项目中,会导致查询时的兼容问题,我需要从火狐复制 XPath 出来,然后用 HtmlAgilityPack 查询。

请教可位,如何解决此问题呢? 这算是 HtmlAgilityPack 的一个bug吗?
...全文
217 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
吹风的兔子 2017-12-26
  • 打赏
  • 举报
回复
其实,网站 本身 是可以针对 不同的 浏览器 返回 不同的 HTML 的。 > 先获取 HtmlAgilityPack 中的 HTML, > 再获取 火狐 的 HTML > 比较一下,是不是因为 HTML 不一致 导致的。
howze 2017-12-25
  • 打赏
  • 举报
回复
听说加上这个有用,没试过,你试试看
HtmlNode.ElementsFlags.Remove("form");

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧