我正在尝试获取 class="hardfact"中的文本,但同时也获取了 class="hardfactlabel color_f_03"的文本,因为此类位于 hardfact 中。
.text.strip() 获取两个类的文本,因为它们是嵌套的。
from bs4 import BeautifulSoup as soup
from urllib.request import urlopen as uReq
import requests
import lxml
my_url = 'https://www.immowelt.de/expose/2QC5D4A?npv=52'
page = requests.get(my_url)
ct = soup(page.text, 'lxml')
specs = ct.find('div', class_="hardfacts clear").findAll('div', class_="hardfact")
for items in specs:
e = items.text.strip()
print(e)
我明白了
82.500 欧元
Kaufpreis
47 平方米
Wohnfläche (ca.)
1
Zimmer
我想要这个
82.500 欧元
47 平方米
1
最佳答案
这是您要抓取的 html 内容:
<div class="hardfact ">
<strong>82.500 € </strong>
<div class="hardfactlabel color_f_03">
Kaufpreis
</div>
</div>
<div class="hardfact ">
47 m²
<div class="hardfactlabel color_f_03">
Wohnfläche (ca.)
</div>
</div>
<div class="hardfact rooms">
1
<div class="hardfactlabel color_f_03">
Zimmer
</div>
</div>
你想要实现的是去掉里面的div标签,这样你就可以分解div了:
for items in specs:
items.div.decompose()
e = items.text.strip()
print(e)
如果你的第一个“hardfact”类不包含“strong”标签,你可以像这样找到第一个元素
e = items.find().text.strip()
但是我们不能这样做所以你必须分解div标签。
关于html - 我如何在忽略内部下一个类的文本的同时获取类中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56248042/