gpt4 book ai didi

python - 带有 :not does not behave as expected 的 CSS 选择器

转载 作者:行者123 更新时间:2023-11-28 19:23:12 25 4
gpt4 key购买 nike

我想使用 CSS 选择器在 Python 中使用 CSS 选择器选择值 SOUND WORD 元素之后但在值为 COMPONENTS 的元素之前的所有内容。

<p class="p_cat_heading">SOUND WORD</p>
<p class="p_normal__and__avoid_page_break_after"><span class="c_tone_char">Vene</span><span class="c_tone_char__and__underline">zue</span><span class="c_tone_char">la</span> /<span class="calibre22">venedswela</span>/</p>
<p class="p_normal__and__avoid_page_break_after">South American country over the equator, known in part for its sunny beaches. Pronounce it in Italian for a better sound match.</p>
<p class="p_normal__and__avoid_page_break_after"><img width="30%" alt="" src="../images/00461.jpeg" class="calibre18"/></p>
<p class="p_cat_heading__and__centre_alignment">COMPONENTS</p>

我正在使用以下 CSS 选择器:

content = str(soup.select_one('.p_cat_heading:contains("SOUND WORD") + :not(.p_cat_heading)'))  # type: str

这应该选择所有内容,直到具有类 p_cat_heading 的元素。但是它只选择:

<p class="p_normal__and__avoid_page_break_after"><span class="c_tone_char">Vene</span><span class="c_tone_char__and__underline">zue</span><span class="c_tone_char">la</span> /<span class="calibre22">venedswela</span>/</p>

我一定是误解了 CSS 选择器的工作原理。我以为 : 像 Python 切片一样工作,但事实并非如此。也就是说,我不确定我错过了什么。

最佳答案

感谢@Barmar 在这方面的帮助。重申一下他的意见,你不能用 CSS 选择器来做到这一点。相反,我所做的是遍历元素,直到到达分隔符:

for temp_heading in heading.find_next_siblings():
if temp_heading.attrs["class"][0] == "p_cat_heading":
break
else:
print(str(temp_heading))
organized_entry["soundword"] = content

其中 temp_heading 是 bs.element.Tag 的一个实例,它开始于指向:

<p class="p_cat_heading">SOUND WORD</p>

关于python - 带有 :not does not behave as expected 的 CSS 选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56909999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com