lxml
是一个 Python 库,它提供了对 XML 和 HTML 的高效处理能力。lxml
以其易用性、高性能和对标准的支持而广受好评。它支持 XPath 和 XSLT 标准,并且可以与 BeautifulSoup
库一起使用,以提供更快的解析速度。
以下是 lxml
的一些关键特性:
- 支持 XML 和 HTML 的解析。
- 提供了类似 DOM 和 SAX 的接口。
- 支持 XPath 表达式,可以方便地查询和遍历文档。
- 支持 XSLT 转换,可以用于将 XML 文档转换为其他格式。
- 比 Python 标准库中的解析器更快。
要使用 lxml
,你需要先安装它,通常使用 pip
:
pip install lxml
以下是一些使用 lxml
的代码示例:
解析 HTML:
from lxml import html url = 'http://www.example.com' response = requests.get(url) tree = html.fromstring(response.content) print(tree.xpath('//title/text()')[0]) # 获取页面标题
使用 XPath 表达式:
# 获取所有的链接 links = tree.xpath('//a/@href') for link in links: print(link)
解析 XML:
from lxml import etree xml_data = """<root> <element attribute="value">Text</element> </root>""" tree = etree.fromstring(xml_data) print(tree.xpath('//root/element/@attribute')[0]) # 获取属性
修改和创建 XML/HTML 文档:
# 创建一个新的HTML文档 new_doc = html.Html() body = html.Body() new_doc.html.append(body) p = html.P('Hello, World!') body.append(p) print(new_doc)
保存解析后的文档:
with open('output.html', 'wb') as f: f.write(etree.tostring(tree, pretty_print=True))
使用
BeautifulSoup
与lxml
:from bs4 import BeautifulSoup soup = BeautifulSoup(some_html, 'lxml') print(soup.prettify()) # 使用lxml解析器格式化HTML
异常处理:
from lxml import etree try: tree = etree.fromstring(bad_xml_data) except etree.XMLSyntaxError as e: print("XML 语法错误:", e)
lxml
库是 Python 中处理 XML 和 HT