contents
属性可用于 Soup 对象以及 Tag 对象。它返回对象内部包含的所有内容的列表,包括所有直接子元素和文本节点(即 NavigableString)。
语法
Tag.contents
返回值
contents
属性返回 Tag/Soup 对象中的子元素和字符串列表。
示例
示例 1
标签对象的内容:
from bs4 import BeautifulSoup
markup = '''
<div id="Languages">
<p>Java</p>
<p>Python</p>
<p>C++</p>
</div>
'''
soup = BeautifulSoup(markup, 'html.parser')
tag = soup.div
print(tag.contents)
输出:
['\n', <p>Java</p>, '\n', <p>Python</p>, '\n', <p>C++</p>, '\n']
示例 2
整个文档的内容:
from bs4 import BeautifulSoup
markup = '''
<div id="Languages">
<p>Java</p> <p>Python</p> <p>C++</p>
</div>
'''
soup = BeautifulSoup(markup, 'html.parser')
print(soup.contents)
输出:
['\n', <div id="Languages">
<p>Java</p> <p>Python</p> <p>C++</p>
</div>, '\n']
示例 3
请注意,NavigableString 对象没有 contents
属性。如果我们尝试访问该属性,将会抛出 AttributeError
异常。
from bs4 import BeautifulSoup
markup = '''
<div id="Languages">
<p>Java</p> <p>Python</p> <p>C++</p>
</div>
'''
soup = BeautifulSoup(markup, 'html.parser')
tag = soup.p
s = tag.contents[0]
print(s.contents)
输出:
Traceback (most recent call last):
File "C:\Users\user\yoagoa\2.py", line 11, in <module>
print(s.contents)
^^^^^^^^^^
File "C:\Users\user\yoagoa\Lib\site-packages\bs4\element.py", line 984, in __getattr__
raise AttributeError(
AttributeError: 'NavigableString' object has no attribute 'contents'