python - 我们可以在 Beautifulsoup 中将所有 XML 标签转换为小写吗

标签 python xml python-3.x beautifulsoup

在使用 Beautifulsoup 和 HTMl 解析器时,标签被转换为小写。但是我们如何在使用 LXML 解析器的同时实现。在下面的情况下,我无法打印输出。但是如果我使用 html 解析器进行解析。它工作正常。谁能帮帮我?

html_doc = """
<html><HEAD><title>The Dormouse's story</title></HEAD>

<p class="title"><b>The Dormouse's story</b></p>
<p class="story">...</p>
"""

from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc, "xml")

print soup.head

最佳答案

不要使用 XML 解析器来解析 HTML。 HTML 不区分大小写,但 XML 不区分大小写。

你可以用 lxml 解析 HTML 就好了,只需使用 HTML modus:

>>> soup = BeautifulSoup(html_doc, "lxml")
>>> soup.head
<head><title>The Dormouse's story</title></head>

如果您坚持使用 XML 解析器,则必须匹配输入元素的大小写:

>>> soup = BeautifulSoup(html_doc, "xml")
>>> soup.head
>>> soup.HEAD
<HEAD><title>The Dormouse's story</title></HEAD>

如果您想要处理 XML 并且不区分大小写,请坚持使用 lxml 提供的 ElementTree API,并且根本不要使用 BeautifulSoup。然后你必须使用 regular expression XPath search :

regexpNS = "http://exslt.org/regular-expressions"
tree.xpath('//*[re:test(., '^head$', 'i')]', namespaces={'re':regexpNS})

这将找到名称为 head 的所有元素,不区分大小写。

关于python - 我们可以在 Beautifulsoup 中将所有 XML 标签转换为小写吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15004950/

相关文章:

python - 将数据从 Excel 工作表转储到 mysql 数据库时出现错误

php - 无法将 RSS Feed 添加到 PHP 网站

java - 以编程方式卸载应用程序 : crash rotating the device

python - 一个函数如何调用同一个类中的另一个函数?如何修复 Unresolved 引用错误?

python - 使用 PySide2 在 QML 中注册类型

python - 使用 numpy.genfromtxt 时如何保留以减号开头的列名称?

python - Kivy 桌面中的热键

python - Python 发行版的用例是什么?

Python - psycopg2 执行后出错

python - 如何获取仅包含所需元素的完整 xml