如何只选择可见项

2024-04-19 22:57:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用scrapy编写一个spider,我发现有些项目是css规则不可见的,但是,我只想选择可见的那些。在

但是xpath对于那些直接编写样式的<span style="display:none">是可以的,而对于那些作为css规则编写的<style>.pigf{display:none}</style>则不可以。在

看起来我应该呈现css,这样我就可以正确地过滤掉不可见的项目,但是我如何呈现它呢?有没有更简单的解决办法?在

html示例:

<span>
    <style>
        .pigf{display:none}.n8T-{display:inline}.pGrH{display:none}.XUYD{display:inline}.jdKj{display:none}.r7fk{display:inline}.pkO2{display:none}.EzIC{display:inline}
    </style>
    <span class="55">
        27
    </span>
    <div style="display:none">
        36
    </div>
    <span style="display:none">
        174
    </span>
    <span class="pkO2">
        174
    </span>
    <span>
    </span>
    .
    <span style="display:none">
        10
    </span>
    <span class="pkO2">
        10
    </span>
    <div style="display:none">
        10
    </div>
    <span style="display:none">
        49
    </span>
    <span class="jdKj">
        49
    </span>
    <span style="display:none">
        84
    </span>
    <span>
    </span>
    <span class="n8T-">
        115
    </span>
    <span style="display:none">
        129
    </span>
    <div style="display:none">
        129
    </div>
    <div style="display:none">
        143
    </div>
    <span style="display:none">
        151
    </span>
    <div style="display:none">
        169
    </div>
    <span>
    </span>
    .
    <span class="14">
        75
    </span>
    <span class="XUYD">
        .
    </span>
    <div style="display:none">
        23
    </div>
    <span style="display:none">
        79
    </span>
    <span style="display: inline">
        114
    </span>
</span>

Tags: 项目divnonestyle规则displayinlinecss
1条回答
网友
1楼 · 发布于 2024-04-19 22:57:37

为了使事情变得可靠,您需要一些东西来呈现HTML—理想情况下是一个真正的浏览器。研究一下您可以用来自动化浏览器的^{}包。请注意,浏览器也可以是无头的,比如PhantomJS。在

selenium很容易distinguish visible and invisible elements。有一个相关的is_displayed()方法可以用来检查可见性。另外,如果您要获得元素的文本,根据specification,它将只返回文本的可见部分。在

您也可以在^{}的帮助下在^{}中呈现页面。示例用法可以在here中找到。在

相关问题 更多 >