unicode 换行符




 

在使用 Beautiful Soup 解析 HTML 时,处理换行符(`\n`)的行为取决于 HTML 文档的结构以及解析器如何表示这些内容。Beautiful Soup 在解析过程中会自动将 HTML 转换为 Unicode 编码,并对空白字符进行一定的规范化处理[^2]。 ### 处理 HTML 中的换行符 HTML 中的换行符通常出现在以下几种情况中: - `<br>` 标签用于强制换行。 - `<pre>` 或 `<textarea>` 等标签中的原始文本保留了空格和换行符。 - 普通文本节点中包含换行符,例如在 `<div>` 或 `<p>` 标签中手动插入 `\n`。 Beautiful Soup 默认不会保留所有的空白字符,包括换行符,除非它们是明确由 HTML 标签(如 `<br>`)或 `<pre>` 标签定义的。如果需要保留原始换行信息,可以在提取文本时结合 `.text` 属性或 `get_text()` 方法并使用适当的参数。 ### 示例代码:提取并保留换行符 ```python from bs4 import BeautifulSoup html = ''' <div> 这是一段文字, 这里有一个换行符。\n <br/> 这是下一行的内容。 </div> ''' soup = BeautifulSoup(html, 'html.parser') # 提取所有文本内容,并用 \n 分隔不同节点的文本 text_with_newlines = soup.div.get_text('\n', strip=True) print(text_with_newlines) ``` 输出结果如下: ``` 这是一段文字, 这里有一个换行符。 这是下一行的内容。 ``` 在这个示例中,`get_text('\n')` 使用换行符作为分隔符,使得多个子节点的文本内容在合并时保留了逻辑上的换行[^5]。 ### 特殊标签中的换行符 对于 `<pre>` 标签,其中的文本通常要求保留原始格式,包括空格和换行符。Beautiful Soup 会原样保留这些内容: ```python html = ''' <pre> This is a pre-formatted text block with line breaks. </pre> ''' soup = BeautifulSoup(html, 'html.parser') print(soup.pre.text) ``` 输出结果中将保留原始换行和缩进: ``` This is a pre-formatted text block with line breaks. ``` ### 控制空白字符的处理方式 若希望完全控制空白字符的处理,可以通过遍历 `Tag` 的 `.contents` 并手动判断每个子节点是否为 `NavigableString`,从而精确地提取原始文本内容: ```python from bs4 import BeautifulSoup, NavigableString html = ''' <p>Hello<br/>World</p> ''' soup = BeautifulSoup(html, 'html.parser') for child in soup.p.children: if isinstance(child, NavigableString): print(repr(child)) ``` 这段代码将分别输出 `'Hello'` 和 `'World'`,中间的 `<br/>` 是一个 `Tag` 对象而非字符串。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值