我试图从位于两个dt
标签之间的dd
标签中获取文本。我对dd
标签中的文本感兴趣,这些标签从dt
标签开始,其中包含Bransje
,直到下一个dt
标签。
下一个dt
标签包含Stillingsfunksjon
,这可能并不总是如此。假设下一个dt
标签可以包含任何内容
from bs4 import BeautifulSoup
html = """
<section class="panel">
<dl class="definition-list definition-list--inline">
<dt>Sektor</dt>
<dd>Privat</dd>
<dt>Sted</dt>
<dd>Bratsbergveien 5, 7037 Trondheim</dd>
<dt>Bransje</dt>
<dd>Industri og produksjon,</dd>
<dd>Maritim og offshore,</dd>
<dd>Olje og gass</dd>
<dt>Stillingsfunksjon</dt>
<dd>Ingeniør</dd>
</dl>
</section>
"""
soup = BeautifulSoup(html,"lxml")
for i in soup.select("dt:-soup-contains('Bransje') ~ dd"):
print(i.text)
当前输出:
Industri og produksjon,
Maritim og offshore,
Olje og gass
Ingeniør
预期输出:
Industri og produksjon,
Maritim og offshore,
Olje og gass
到达那里的一种方法:
for i in soup.select("dt:-soup-contains('Bransje') ~ *"):
if i.name=="dt":
break
else:
print(i.text)
输出应该是你期望的输出。