display:none的内容如何过滤掉?

新手上路,请多包涵

display:none的内容如何过滤掉?

阅读 3.1k
2 个回答

display: none 相当于你已经过滤掉了,不占用dom
你可以去了解一下none和hide

你这个问题是 querylist 话题下的,猜测你是做爬虫。

image.png

那么从 display:none 设置方式先说一下

<div id="app">
    <div class="div1">1</div>
    <div id="app2">2</div>
    <div style="display:none">3</div>
    <div>4</div>
</div>
<style>
    .div1,#app2{display:none}
</style>

http://jsrun.net/bAIKp/edit

可以通过多种形式设置

  1. 行内样式 style
  2. style 标签
  3. link 标签
  4. 还可以 @import 加载
  5. 还可以通过 js 操作

    1. dom.style.display
    2. dom.setAttribute
    3. dom.className
    4. dom.classList.add
    5. ...这个就太多了

接下来就是爬虫常见处理方法了

  1. 字符串处理,正则表达式之类的

    1. 正则匹配出现 display:none 的注意大小写和空格。
  2. 转换为xml树之类的

    1. 这个就是无脑递归遍历,取style然后判断了。
  3. 无头浏览器(上面两个方案的缺点差不多,无法检测出所有场景。其实也可以,那就是自己实现css渲染树、dom渲染树,那我估计你是喝多了

    1. 那就简单了,看我 jquery 大法
      image.png
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进