【问题标题】:Beautiful soup ignore multiple spaces out of tags美丽的汤忽略标签中的多个空格
【发布时间】:2021-08-26 22:37:54
【问题描述】:

当我使用 BeautifulSoup 从 html 中获取文本时,我发现它会忽略多个空格。比如下面的例子,</seg>和<seg>之间有2个空格,但是输出只有一个空格,不管多少个空格,还是输出一个空格。

import bs4

text = "<line><seg>aaa</seg>  <seg>bbb</seg></line>"
soup = bs4.BeautifulSoup(text)
print(soup.text)
print(soup.find_all(text=True))

输出是:

aaa bbb
['aaa', ' ', 'bbb']

但我真正想要的是:

aaa  bbb
['aaa', '  ', 'bbb']

有什么想法吗?

或

如果在javascript中有等效的方法?获取文本但忽略标签外的多个空格

【问题讨论】:

    标签: javascript python html beautifulsoup


    【解决方案1】:

    这是 html 解析器的正常行为。

    见:

    https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Whitespace

    引用一些相关部分:

    HTML largely ignores whitespace?

    在 HTML 的情况下,空白在很大程度上被忽略了——空白在 单词之间被视为单个字符,并且在 元素和外部元素的开始和结束被忽略。

    在元素周围和内部创建空间是 CSS 的工作。

    What does happen to whitespace?

    然而,它们不会消失。

    任何在 HTML 元素之外的空白字符 原始文档在 DOM 中表示。这是需要的 内部,以便编辑器可以保留文档的格式。 这意味着:

    会有一些文本节点只包含空格,还有一些 文本节点的开头或结尾会有空格。

    How does CSS process whitespace?

    大多数空白字符都被忽略了,并不是所有的都是.....那里 是浏览器引擎中决定哪个空格的规则 字符是有用的,哪些不是——至少指定了这些字符 部分在CSS Text Module Level 3,尤其是部分 关于CSS white-space property 和whitespace processing details。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-18
      • 1970-01-01
      • 1970-01-01
      • 2015-12-03
      • 1970-01-01
      • 2017-12-05
      • 2016-03-22
      相关资源
      最近更新 更多