如何解决Beautiful Soup 4:仅从包含子标签的标签中提取文本
我从一个更大的文档中得到了这个 HTML 片段,我想从主 div
中只用 class="title"
抓取“$ 430000”字符串:
<div class="title">
$ 430000
<div class="container">
<span class="price">
$ 505000
</span>
<span class="discount">
(-14.9%)
</span>
<div class="inner-container">
<p class="text--bold">
discounted $ 75000
<span class="discount">
(-14.9%)
</span>
</p>
<p>
18/02/2010
</p>
</div>
</div>
</div>
我知道我可以通过 tag.stripped_strings
访问所需的字符串,然后从生成器生成第一个值:
tag = soup.find('div',{'class': 'title'})
print(next(tag.stripped_strings))
$ 430000
但是,我想知道是否有 BS4 属性或方法可以使我仅定位 <div class="title">
中的文本,即“$ 430000”字符串。如果我打电话给tag.text
,我会得到
\n $ 430000\n $ 505000(-14.9%)\n discounted $ 75.000(-14.9%)18/02/2021```
解决方法
您可能正在寻找 .next_element
[docs] 属性,该属性指向抓取的任何内容之后的立即。所以,在你的情况下,它看起来像这样。
result = soup.find('div',class_='title').next_element.strip()
# -> $ 430000
,
是的,您可以通过以下方式仅获取父元素的文本并忽略其子元素的文本:
tag = soup.find('div',{'class': 'title'})
tagtext = tag.find(text=True,recursive=False)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。