在 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字符串。
相关用法
- Python BeautifulSoup Tag strings属性用法及代码示例
- Python BeautifulSoup Tag stripped_strings属性用法及代码示例
- Python BeautifulSoup Tag contents属性用法及代码示例
- Python BeautifulSoup Tag decompose方法用法及代码示例
- Python BeautifulSoup Tag children属性用法及代码示例
- Python BeautifulSoup Tag get_text方法用法及代码示例
- Python BeautifulSoup Tag clear方法用法及代码示例
- Python BeautifulSoup Tag descendants属性用法及代码示例
- Python Tableau TableauAuth用法及代码示例
- Python Django Tan用法及代码示例
- Python Tableau TaskItem用法及代码示例
- Python Thread join()用法及代码示例
- Python Django TodayArchiveView用法及代码示例
- Python Tensorflow asin()用法及代码示例
- Python Django TransactionNow用法及代码示例
- Python Thread run()用法及代码示例
- Python TextBlob.correct()用法及代码示例
- Python Tuple len()用法及代码示例
- Python Tensorflow math.accumulate_n()用法及代码示例
- Python Tensorflow cosh()用法及代码示例
- Python Pandas Timestamp构造函数用法及代码示例
- Python Django TransactionTestCase.reset_sequences用法及代码示例
- Python Tuple min()用法及代码示例
- Python Thread setName()用法及代码示例
- Python TextCalendar prmonth()用法及代码示例
注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 BeautifulSoup Tag | string property。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。