Python 3.x 如何从特定/选择性中获取值<;dd>;及<;dt>;没有类名的元素?

Python 3.x 如何从特定/选择性中获取值<;dd>;及<;dt>;没有类名的元素?,python-3.x,beautifulsoup,Python 3.x,Beautifulsoup,目标网站: HTML文件 <div class="i_d"> <dl> <dt class="">Série:</dt> <dd><a href="/cs/coins/list/country/349-Britsk%C3%A1_Guyana/series/101385-Britsk%C3%A1_Guyana_-_Standardn%C3%AD_ra%C5%BEba">

目标网站:

HTML文件

<div class="i_d">
<dl>
<dt class="">Série:</dt>
<dd><a href="/cs/coins/list/country/349-Britsk%C3%A1_Guyana/series/101385-Britsk%C3%A1_Guyana_-_Standardn%C3%AD_ra%C5%BEba">Britská Guyana - Standardní ražba</a></dd>
<dt>Katalogové číslo:</dt>
<dd><strong>WCC:</strong>km22</dd>
<dt>Témata:</dt><dd><a href="/cs/coins/list/country/349-Britsk%C3%A1_Guyana/theme/641-Kr%C3%A1lov%C3%A9">Králové</a> | <a href="/cs/coins/list/country/349-Britsk%C3%A1_Guyana/theme/3134-V%C4%9Bnce">Věnce</a></dd>
...
</dl>
我得到了
中所有硬币的所有值(来自所有dt dl元素的数据)

但是,如何仅获取
dt
dl
的选择性值和而不是全部

预期产出:


Témata:KrálovéVěnce

您可以使用:contains以适当的dt为目标,然后使用相邻的兄弟组合器移动到dd。在目标不存在的地方添加一些处理,例如
Témata:

import requests
from bs4 import BeautifulSoup as bs
import re

r = requests.get('https://colnect.com/cs/coins/list/country/349-Britsk%C3%A1_Guyana', headers = {'User-Agent':'Mozilla/5.0'})
soup = bs(r.content, 'lxml')
results = []

for coin in soup.select('.pl-it'):
    print('coin:' , coin.select_one('.item_header a').text)
    print('-' * 20)
    target = coin.select_one('dt:contains("Témata:") + dd')
    if target is None:
        print('Not present')
    else:
        print(target.get_text())
    print()

很好,谢谢!
import requests
from bs4 import BeautifulSoup as bs
import re

r = requests.get('https://colnect.com/cs/coins/list/country/349-Britsk%C3%A1_Guyana', headers = {'User-Agent':'Mozilla/5.0'})
soup = bs(r.content, 'lxml')
results = []

for coin in soup.select('.pl-it'):
    print('coin:' , coin.select_one('.item_header a').text)
    print('-' * 20)
    target = coin.select_one('dt:contains("Témata:") + dd')
    if target is None:
        print('Not present')
    else:
        print(target.get_text())
    print()