python - 如何跳过特定标签中的文本?
问题描述
我想按特定类从 div 中提取文本。在这个 div 中,我有特定类的文本和额外的 span 标签,这是我不想要的。那么,如何从 div 中获取文本并忽略 span 中的文本?
一棵树看起来像:
<div class="desc"><h3 class="text-15 margin-bottom-10">Some desc:</h3>Some
title <br/>
- text <br/>
- text<br/>
<br/>
text <br/>
<br/>
<br/>
text <br/>
@ <br/>
<br/>
text <span class="some_class">TEXT WHICH I DONT WANT</span> <br/>
<br/>
text <br/>
text <br/>
text </div>
所以现在我得到了:
desc = source.find('div', class_="desc").text
并获得带跨度的全文。我尝试使用 decompose(), text=True, recursive=False 但不起作用。任何人都知道如何解决它?
解决方案
.extract()
应该做的伎俩:
html = '''<div class="desc"><h3 class="text-15 margin-bottom-10">Some desc:</h3>Some
title <br/>
- text <br/>
- text<br/>
<br/>
text <br/>
<br/>
<br/>
text <br/>
@ <br/>
<br/>
text <span class="some_class">TEXT WHICH I DONT WANT</span> <br/>
<br/>
text <br/>
text <br/>
text </div>'''
import bs4
soup = bs4.BeautifulSoup(html, 'html.parser')
soup.find('span').extract()
desc = soup.find('div', class_="desc").text
输出:
print (desc)
Some desc:Some
title
- text
- text
text
text
@
text
text
text
text
推荐阅读
- java - 在 v26 之前的 API 级别上的 SparkJava
- java - 带有缩进的 UTF-8 字符的 printf
- javascript - 当模式处于活动状态时,传单地图仍然存在。为什么?
- ssas - 将维度名称值转换为 MDX 中的键值
- bash - 如何从中提取“en0”:'networksetup -listallhardwareports'
- python - 字符串方法:对于 8 位字符串,此方法取决于语言环境
- php - 问题从 php 向 Gmail 发送数字签名的电子邮件
- javascript - getElementById 在 popup.js [chrome 扩展名] 中不起作用
- css - 如何使用 CSS 移除滑动效果?
- php - 使用 php 连接到 mongodb 时出现错误