CSS选择器仅选择第一个子文本,而不选择div

时间:2020-09-16 23:08:11

标签: javascript html css web-scraping

我想使用css选择器从该div <div class="one">中仅选择文本(在我的示例中为“ 1.42”),以便进行抓取:

<div class="one">
1.42
<div class="nested">..</div>
</div>

我尝试了此操作,但返回了整个<div class="one">(我只想要文本):

div.one:first-child

这也是

div.one:first-child:not(.nested)

它们都返回文本以及div.nested内的内容

编辑:

我想使用选择器通过Beautifulsoup抓取特定文本

soup.select_one('div.one:first-child:not(.nested)')

1 个答案:

答案 0 :(得分:3)

使用css类或不使用css类,都无法通过css选择不在html标记内的内容。在您的情况下,您应该将1.42文本包装在html标签中,例如<p>

这也是最佳做法,永远不要在没有诸如p的语义文本标记的情况下直接在div中直接打印文本。

拥有<p class="...">Text here</p>后,您可以选择div:first-child,也可以简单地选择p或p.theclassname。另一种方法是div:nth-child(1)