我开始使用BeautifulSoup并试图理解汤对象的文本和字符串属性之间的区别 . 这是我正在使用的HTML代码: -
html_doc = """
<html>
<body>
<table>
<tr>
<td></td>
<td>1.0 SOME TEXT</td>
<td>
<p>2.0 SOME TEXT</p>
</td>
<td>
<p>3.1 SOME</p>
<p>3.2 TEXT</p>
</td>
</tr>
</table>
</body>
</html>
"""
这就是我所做的: -
soup = bs(html_doc, 'html.parser')
tr = soup.find('tr')
children = tr.findChildren()
现在,如果我像我在这里一样使用.text: -
for child in children:
print(child.text)
输出是: -
1.0 SOME TEXT
2.0 SOME TEXT
2.0 SOME TEXT
3.1 SOME
3.2 TEXT
3.1 SOME
3.2 TEXT
但如果我使用.string属性,这是输出: -
None
1.0 SOME TEXT
None
2.0 SOME TEXT
None
3.1 SOME
3.2 TEXT
现在,我理解没有的标签的“无”和缺少文本
标签,没有文字/信息/数据,但我不明白为什么 . BeautifulSoup中的.text打印数据/信息两次 .
1 回答
所以
.text
会得到文本解析文本,无论字符串是直接在节点上还是在childNode中,但另一方面.string
将会像这样"If a tag contains more than one thing, then it’s not clear what .string should refer to, so .string is defined to be None:"在这里阅读更多关于
.string
https://www.crummy.com/software/BeautifulSoup/bs4/doc/#string的使用