如何删除所有隐藏的元素?

时间:2014-09-03 13:29:43

标签: c# html css html-agility-pack

我正在寻找一种方法去除HTML文档中隐藏的所有元素。

我可以删除包含样式display:nonevisible:hidden的元素,但是那些因CSS类而隐藏的元素呢?有没有办法看一下DIV与课程" item-description"并且知道这个类的样式表包含display:none

1 个答案:

答案 0 :(得分:1)

无法通过HtmlAgilityPack了解这一点,因为它没有考虑样式,只考虑了DOM。

如果您想在加载html后真正能够处理样式,那么必须

  • 解析css(遵循所有@imports和其他技巧)
  • 使用选择器
  • 将每个规则应用于每个DOM节点
  • 应用继承规则以查看隐藏或不隐藏的内容,具体取决于父层次结构和规则
  • 解决一致性问题(如果组件可见而不是其父组件会怎么样?如何将其转换为最终文档?)
  • 我希望您决定使用您要模拟的浏览器,因为某些css规则将适用于特定的浏览器。
  • 我也希望你没有触及页面上的DOM的javascript ...

我确定我忘记了更多的事情......不要去那里!有grues!

如果您真的想在C#中获得此结果,可能嵌入渲染引擎然后通过javascript查询它将是一种更好的方法。