html - 我如何在忽略内部下一个类的文本的同时获取类中的文本

标签 html css python-3.x web-scraping beautifulsoup

我正在尝试获取 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 €&nbsp;</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/

相关文章:

javascript - 如何以声明方式创建自定义 HTML 元素?

python - 如何从列表中检索项目 'n'?

javascript - PHP - 访问控制允许来源不工作

javascript - HTML Javascript - 如何向输入语句添加函数并隐藏输入语句,除非选中"is",然后取消隐藏

javascript - 使用 Vue.js 在 v-for 中设置背景图片

html - CSS Flexbox 3 列桌面到 2 列平板电脑,可重新排序 Flex 元素

css - 浏览器之间的 flexbox 布局不一致(Chrome 和 Safari)

python - 使用子进程从 python 执行时,ssh 不被识别为命令?

python - 是否可以在 tkinter & python 中创建多个表单字段,然后将其提交到表列格式的输出文本框

javascript - 如何为多个复选框绑定(bind)单击事件处理程序?