簡體   English   中英

美麗的湯忽略標簽中的多個空格

[英]Beautiful soup ignore multiple spaces out of tags

當我使用 BeautifulSoup 從 html 獲取文本時,我發現它會忽略多個空格。 對於下面的示例,在</seg><seg>之間有 2 個空格,但是 output 只有一個空格,無論多少個空格,它都會 output 一個空格。

import bs4

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

output 是:

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

但我真正想要的是:

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

有任何想法嗎?

或者

javascript 中是否有等效方法? 獲取文本但忽略標簽外的多個空格

這是 html 解析器的正常行為。

看:

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

引用一些相關部分:

HTML 很大程度上忽略了空格?

在 HTML 的情況下,空白在很大程度上被忽略——單詞之間的空白被視為單個字符,元素和外部元素的開頭和結尾的空白被忽略。

在元素周圍和內部創造空間是 CSS 的工作。

空白會發生什么?

然而,它們不只是消失。

原始文檔中 HTML 元素之外的任何空白字符都在 DOM 中表示。 這是內部需要的,以便編輯器可以保留文檔的格式。 這意味着:

會有一些文本節點只包含空格,而一些文本節點的開頭或結尾會有空格。

CSS 如何處理空白?

大多數空白字符都被忽略了,並不是所有的都是......瀏覽器引擎中有一些規則可以決定哪些空白字符有用,哪些沒有 - 這些至少在CSS Text Module Level 3中部分指定,特別是關於CSS 空白屬性空白處理細節的部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM