python - BS4 : Getting text in tag

标签 python html parsing html-parsing beautifulsoup

我用的是美汤。有这样一个标签:

<li><a href="example"> s.r.o., <small>small</small></a></li>

我想获取 anchor 内的文本 <a>只有标签,没有来自 <small> 的任何标签输出中的标签;即“ s.r.o.,

我试过了 find('li').text[0]但它不起作用。

BS4中有没有可以做到这一点的命令?

最佳答案

一个选择是从 contents 中获取第一个元素a 元素的:

>>> from bs4 import BeautifulSoup
>>> data = '<li><a href="example"> s.r.o., <small>small</small></a></li>'
>>> soup = BeautifulSoup(data)
>>> print soup.find('a').contents[0]
 s.r.o., 

另一种方法是找到 small 标签并获得 previous sibling :

>>> print soup.find('small').previous_sibling
 s.r.o., 

好吧,还有各种替代/疯狂的选择:

>>> print next(soup.find('a').descendants)
 s.r.o., 
>>> print next(iter(soup.find('a')))
 s.r.o., 

关于python - BS4 : Getting text in tag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25251841/

相关文章:

html - 如何使图像可以在不设置高度的情况下在div中重复显示

python - 如何在 Keras 中为张量创建 bool 掩码?

python - 将 pandas DataFrame 写入 unicode 文本文件时出现问题

javascript - 为什么计算和清除按钮在彼此之上?

javascript - 使事件图标成为激活后的链接,如果未激活则不是链接

jquery - 尝试使用 jQuery 解析 JSON 文件

python - pyparsing setParseAction 没有传递 token

json - Node.JS JSON.parse 错误未定义

python Mysql数据存储

python - flat 和 ravel() 之间的 numpy 区别