python - Beautiful Soup 4中如何处理<br></br>和<br/>?

标签 python html parsing web-scraping beautifulsoup

我正在尝试使用 python 和 Beautiful Soup 4 用新行替换某些 html 中的每个中断标记。

该文档有<br> , <br/></br>标签,但由于 Beautiful Soup 处理标签的方式,每当它找到 <br> ,它会删除它与下一个 </br> 之间的所有内容它看到了。

有办法解决这个问题吗?

最佳答案

尝试使用 HTMLParserTreeBuilder 作为构建器类:

from bs4 import BeautifulSoup
from bs4.builder import HTMLParserTreeBuilder

html_doc = """
<html>this is a test<br> ...between a start and end br... </br> a blank br: <br/> something else
"""

soup = BeautifulSoup(html_doc, builder=HTMLParserTreeBuilder())
print soup.prettify()

比较未给出 builder= 参数时的输出。

您可以确定 bs4 正在使用哪个构建器:

print type(soup.builder)

默认情况下,bs4 似乎选择基于 lxml 的构建器。

关于python - Beautiful Soup 4中如何处理<br></br>和<br/>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27556774/

相关文章:

Python根据其他列表求和列表元素

html - CSS:为什么当 child 漂浮时容器会溢出

HTML::TokeParser - 查找标签之间和之后的文本

java - 使用斯坦福解析器获得句子的 K 个最佳解析

python - 使用 Python/Pandas 库从 JSON 响应中解析数据时遇到问题

Python程序卡住计算机

python - 将具有列表作为值的 Python 字典转换为简单字典

Python StreamIO 从同一个流读取和写入

比较两个没有 CR LF 的字符数组

html - 在 Bootstrap 列内创建页脚