我正在努力获得突出显示的文字" frei ab 01.05.2017"下面。然而问题是,班级" section_content iw_right"在该网站上存在19次。我会做一个find_all并且只从那里返回第11个元素,但是在某些我要抓的网站上有不同数量的那个类,所以我可能不会总是抓住正确的。有任何想法吗?谢谢!
答案 0 :(得分:1)
获取所需元素的一种方法是使用前面的标签 - 使用“Erdgeschoss”文本和find the next strong
sibling找到span
元素:
label = soup.find("span", text="Erdgeschoss")
print(label.find_next_sibling("strong").get_text())
答案 1 :(得分:1)
您可以使用 lxml ,这比 BeautifulSoup 快一个数量级。
以下代码可以帮助您实现所需的结果。
from lxml import html
html_string = """
<div class="clear">
<div class="section_content iw_right">
<p>
<span>
</span>
<strong>hello</strong>
<br>
<strong>gen</strong>
</p>
</div>
</div>
<div class="clear">
<p>
<span>
</span>
<strong>hello1</strong>
<br>
<strong>gen1</strong>
</p>
</div>
"""
root = html.fromstring(html_string)
r_xp = [elem.xpath('.//p/strong/text()')[0] for elem in root.xpath('//div[@class="clear"]')]
print(r_xp)
请注意示例"section_content iw_right"
中第二个div
的等级为html_string
的div的缺失。
以上代码将导致:
['hello', 'hello1']