请教一个网页清理的问题

请教一个爬虫中清理网页的问题,下面这种情况,我要提取网页中的 p2 这个部分(字体 40px),如何能把它继承到的格式(红色)也同时提取到?(实际情况可能比这个例子复杂很多)

谢谢!

<head>
    <link rel="stylesheet" href="css1.css" />
</head>
<body>
    <div>
        <p id="p1">AAA</p>
        <p id="p2">BBB</p>
    </div>
</body>
div {
    color: red;
}

#p1 {
    font-size: 10px;
}

#p2 {
    font-size: 40px;
}

这个p2是div中的p2而不是别的地方的p2,那当然div的css也要爬下来啊

遍历出所有层的祖先和句柄是简单的标签还是类名还是嵌套关系的制约,再在css中搜索记录。

比较复杂的,涉及数不清的变化的元素组合和跨层跨种类id标签还有函数混杂的,就得模拟css的继承规则,搜下github有没有现成的库,没有照着 css standard 的规则继承部分写一份,这样css这部分是准确不漏了,或者搜一下 computed css 在不同状态下的所有实际数据,得用浏览器模拟的框架,比如selemium

我想不是什么大项目的话,人脑分析分析几个重要的内容得了。其他细枝末节的小修小补的细节的style,还要看css js的逻辑,甚至还要处理删减所有的css rules,不太值当的。

祝你好运

1 个赞

谢谢详细的分析!我的一个想法是做减法,用一个递归函数把目标区域的所有 siblings 和所有 parents’ siblings 全部都删除,这样就留下目标区域的所有parents,再根据 css 清理掉一些没有规定格式的 parents。