【发布时间】:2013-02-08 16:16:26
【问题描述】:
我正在做一些 HTML 解析,我正在使用 HtmlAgilityPack,我正在尝试检查如果在浏览器中呈现 html,节点元素是否可见。
通过可见,我可能对检查 display 和 visibility 样式值感到满意。 (除非我还有其他需要担心的事情?)。
那么,我该怎么做呢?有没有简单的方法?我可以使用一些 XPath 魔法吗? (目前我对 XPath 的了解不多)。
我曾考虑过手动解析样式值,但宁愿将其保存为最后的手段。还是这是我唯一的选择?
仅供参考,我正在使用的对象是这样的:
HtmlAgilityPack.HtmlNode node = GetNode();
【问题讨论】:
-
这不太可行。可见性可以由级联样式(和 X/Y 定位)决定,为此您基本上需要一个完整的 DOM/CSS 解析器和实现(即浏览器)来计算。 (此外,Javascript 也可以操纵可见性)
-
@KirkWoll:好点。但是,Javascript 在这里不是一个因素,而 Html 实际上是通过将 XSLT 应用于 XML 文件而生成的。但我听到你说的关于 css 文件的内容,可能需要一两把扳手
-
@musefan 不是一件容易的事(一点也不)。这里有很多因素需要考虑。例如,它可能位于隐藏容器内(如您所说),或者元素的位置可能是负数(因此它不会出现在屏幕上)。一些爬虫[需要引用]这样做是为了避免作弊等。
标签: c# html-agility-pack