我有这样的结构文件:
<pwACL>
The gateway only supports upto 10 rules.
</pwACL>
<cmn53>
Batch Number
</cmn53>
我想在标签之间获取标签名称和数据。我尝试使用BeatifulSoup HTMLParser库,但它会自动将标记名称转换为小写。我发现有可能使用html5lib创建树与beatifulsoup树构建器,如下所示:
parser = html5lib.HTMLParser(tree=treebuilders.getTreeBuilder("beatifulsoup"))
但似乎html5lib不再支持beatifulsoup了。还有其他办法吗?
答案 0 :(得分:0)
在BeautisulSoup documentation - Other parsers problems中提及:
因为HTML标记和属性不区分大小写,所以三个HTML 解析器将标记和属性名称转换为小写。那就是 标记
<TAG></TAG>
将转换为<tag></tag>
。如果你想 保留混合大小写或大写标签和属性,您需要 将文档解析为XML。
默认情况下,Beautiful Soup将文档解析为HTML。解析一个 将文档作为XML,传入“xml”作为第二个参数 BeautifulSoup构造函数:
soup = BeautifulSoup(markup, "xml")
>>> markup = '''<pwACL>
... The gateway only supports upto 10 rules.
... </pwACL>'''
>>> soup = BeautifulSoup(markup, 'xml')
>>> soup.find_all()
[<pwACL>\nThe gateway only supports upto 10 rules.\n</pwACL>]