Fla*_*Hyd 1 python xml beautifulsoup python-3.x
在使用 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
Run Code Online (Sandbox Code Playgroud)
不要使用 XML 解析器来解析 HTML。HTML 不区分大小写,但 XML 不区分大小写。
您可以lxml很好地解析 HTML ,只需使用 HTML 模式:
>>> soup = BeautifulSoup(html_doc, "lxml")
>>> soup.head
<head><title>The Dormouse's story</title></head>
Run Code Online (Sandbox Code Playgroud)
如果您坚持使用 XML 解析器,则必须匹配输入元素的大小写:
>>> soup = BeautifulSoup(html_doc, "xml")
>>> soup.head
>>> soup.HEAD
<HEAD><title>The Dormouse's story</title></HEAD>
Run Code Online (Sandbox Code Playgroud)
如果您想处理 XML 并且不区分大小写,请坚持使用 提供的 ElementTree API lxml,并且根本不要使用 BeautifulSoup。然后,您必须使用正则表达式 XPath 搜索:
regexpNS = "http://exslt.org/regular-expressions"
tree.xpath('//*[re:test(., '^head$', 'i')]', namespaces={'re':regexpNS})
Run Code Online (Sandbox Code Playgroud)
它将找到所有具有 name 的元素head,不区分大小写。
| 归档时间: |
|
| 查看次数: |
2082 次 |
| 最近记录: |