【问题标题】:Can we convert all XML tags to lowercase in Beautifulsoup我们可以在 Beautifulsoup 中将所有 XML 标签转换为小写吗
【发布时间】:2013-02-06 22:27:33
【问题描述】:

在使用 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

【问题讨论】:

    标签: python xml python-3.x beautifulsoup


    【解决方案1】:

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

    你可以用lxml解析HTML就好了,只要使用HTML模式:

    >>> 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 的所有元素,不区分大小写。

    【讨论】:

    • 感谢您的回复。我刚刚给出了一个 HTML 示例。如果输入是真正的XML,有什么方法可以实现。
    • 最后一个解决方案请分享,因为处理汤服务非常困难。
    猜你喜欢
    • 2010-10-08
    • 2014-02-19
    • 2012-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    相关资源
    最近更新 更多