簡體   English   中英

如何查找 id 具有前綴“Translations_”的元素?

[英]How to find elements whose id has prefix "Translations_"?

我有一個 html

<details data-level="2" open="">
    <details data-level="5" open="">
        <summary class="section-heading">
            <h5 id="Translations">Translations</h5>
        </summary>
    </details>
    <details data-level="5" open="">
        <summary class="section-heading">
            <h5 id="Translations_2">Translations</h5>
        </summary>
    </details>
    <details data-level="5" open="">
        <summary class="section-heading">
            <h5 id="Translations_6">Translations</h5>
        </summary>
    </details>
</details>

我想提取Translation所表示的這些元素

<h5 id="Translations">Translations</h5>
<h5 id="Translations_2">Translations</h5>
<h5 id="Translations_6">Translations</h5>

使用soup.select('details[data-level] > summary[class] > h5[id="Translations"]') ,我只能提取第一個元素。 你能解釋一下如何修改我的代碼嗎?

from bs4 import BeautifulSoup

texte = """
<details data-level="2" open="">
    <details data-level="5" open="">
        <summary class="section-heading">
            <h5 id="Translations">Translations</h5>
        </summary>
    </details>
    <details data-level="5" open="">
        <summary class="section-heading">
            <h5 id="Translations_2">Translations</h5>
        </summary>
    </details>
    <details data-level="5" open="">
        <summary class="section-heading">
            <h5 id="Translations_6">Translations</h5>
        </summary>
    </details>
</details>
"""

soup = BeautifulSoup(texte, 'html.parser')
soup.select('details[data-level] > summary[class] > h5[id="Translations"]')

您可以使用attr^=value CSS 選擇器

表示屬性名稱為 attr 的元素,其值以值作為前綴(在前)。

from bs4 import BeautifulSoup

data = '''\
<details data-level="2" open="">
    <details data-level="5" open="">
        <summary class="section-heading">
            <h5 id="Translations">Translations</h5>
        </summary>
    </details>
    <details data-level="5" open="">
        <summary class="section-heading">
            <h5 id="Translations_2">Translations</h5>
        </summary>
    </details>
    <details data-level="5" open="">
        <summary class="section-heading">
            <h5 id="Translations_6">Translations</h5>
        </summary>
    </details>
</details>
'''

soup = BeautifulSoup(data, 'html.parser')

for e in soup.select('h5[id^=Translations]'):
    print(e)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM