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