gpt4 book ai didi

python - .string 和 .text BeautifulSoup 之间的区别

转载 作者:IT老高 更新时间:2023-10-28 22:20:48 27 4
gpt4 key购买 nike

我在使用 BeautifulSoup 时发现了一些奇怪的地方,但找不到任何支持这一点的文档,所以我想在这里询问。

假设我们有一个类似这样的标签,我们已经用 BS 解析过:

<td>Some Table Data</td>
<td></td>

official documented提取数据的方法是soup.string .然而,这为第二个 <td> 提取了一个 NoneType标签。所以我尝试了soup.text (因为为什么不呢?)它完全按照我的意愿提取了一个空字符串。

但是,我在文档中找不到对此的任何引用,并且担心会遗漏一些东西。谁能告诉我这是否可以使用或以后会引起问题?

顺便说一句,我正在从网页上抓取表格数据,并打算从数据中创建 CSV,所以我确实需要空字符串而不是 NoneTypes。

最佳答案

Tag 类型对象上的

.string 返回 NavigableString 类型对象。另一方面,.text 获取所有子字符串并使用给定的分隔符连接返回。 .text 的返回类型是 unicode 对象。

来自 documentation , NavigableString 就像 Python 的 Unicode 字符串,除了它还支持 Navigating the tree 中描述的一些特性。和 Searching the tree .

来自 documentation.string上,我们可以看到,如果html是这样的,

<td>Some Table Data</td>
<td></td>

然后,第二个 td 上的 .string 将返回 None。但是.text会返回一个空字符串,是一个unicode类型的对象。

为了更方便,

字符串

  • tag 的便利属性,用于获取此标记中的单个字符串。
  • 如果 tag 有一个子字符串,那么返回值就是那个字符串。
  • 如果 tag 没有子级或多个子级,则返回值为 None
  • 如果这个标签有一个子标签,那么返回值是子标签的'string'属性,递归。

文本

  • 获取所有子字符串并使用给定的分隔符连接返回。

如果html是这样的:

<td>some text</td>
<td></td>
<td><p>more text</p></td>
<td>even <p>more text</p></td>

.string上的四个td都会返回,

some text
None
more text
None

.text 会给出这样的结果,

some text

more text
even more text

关于python - .string 和 .text BeautifulSoup 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25327693/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com