我开始使用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
现在,我理解“没有”&#39;没有
标签且没有文字/信息/数据的标签没有文字,但我不明白为什么。BeautifulSoup中的.text会打印两次数据/信息。
答案 0 :(得分:0)
因此,无论字符串是直接在节点上还是在childNode中,.text
都会为您提供文本解析文本,但另一方面,.string
将会像这样“如果一个tag包含多个东西,然后不清楚.string应该引用什么,所以.string被定义为None:“
print(soup.html.string)
# None
请在此处详细了解.string
https://www.crummy.com/software/BeautifulSoup/bs4/doc/#string