当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python BeautifulSoup Tag string属性用法及代码示例


在 Beautiful Soup 中,字符串属性返回 NavigableString 对象,该对象类似于典型的 Python 字符串,具有用于在 HTML 文档中导航的附加帮助器方法和属性。

为了演示如何使用字符串属性,这里有一个玩具 HTML 文档:

my_html = """
       <div>
              <p>Alice</p>
              <p>Bob</p>
      <p id="cathy"></p>
       </div>
"""
soup = BeautifulSoup(my_html)

例子

要获取文本Alice

soup.find("p").string



'Alice'

如果你想将其转换为标准 Python 字符串,只需使用 str(~) 即可,如下所示:

str(soup.find("p").string)



'Alice'

当有多个孩子时的情况

当标签有多个子元素时,则返回None

soup.find("div").string



None

在我们的 HTML 文档中,根 div 标记包含 3 个 p 标记,因此这就是返回 None 的原因。

没有内部内容的情况

当标签为空时,返回None

soup.find(id="cathy").string



None

请注意,不会返回空字符串""

转换为标准 Python 字符串

要将 Beautiful Soup 的 NavigableString 转换为标准 Python 字符串,请使用本机 str(~) 方法,如下所示:

x_nav = soup.find("p").string
x = str(x_nav)
x



'Alice'

我们来比较一下它们的类型:

print("before:", type(x_nav))
print("after:", type(x))



before: <class 'bs4.element.NavigableString'>
after: <class 'str'>
警告

使用 NavigableString 时潜在的内存泄漏

NavigableString 包含对 Beautiful Soup 库的引用。这意味着,如果您保留 NavigableStrings,即使您使用完 Beautiful Soup,系统也将无法释放内存。为了确保不会发生这样的内存泄漏,请将最终的NavigableString转换为标准Python字符串。

相关用法


注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 BeautifulSoup Tag | string property。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。