微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Beautiful Soup 4:仅从包含子标签的标签中提取文本

如何解决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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?