【问题标题】:How to handle <br> </br> and <br/> in Beautiful Soup 4?美汤4中的<br> </br>和<br/>如何处理?
【发布时间】:2015-02-17 20:12:35
【问题描述】:
我正在尝试使用 python 和 Beautiful Soup 4 将某些 html 中的每个中断标记替换为新行。
该文档中有<br>、<br/> 和</br> 标签,但由于Beautiful Soup 处理标签的方式,只要找到<br>,它就会删除它与下一个</br> 之间的所有内容看到了。
有没有办法解决这个问题?
【问题讨论】:
标签:
python
html
parsing
web-scraping
beautifulsoup
【解决方案1】:
尝试为构建器类使用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 的构建器。