Python lxml库怎么安装和使用 lxml解析XML教程

11次阅读

直接用 pip install lxml 安装,windows 通常无问题,macos/linux 需先装 libxml2/libxslt 依赖或换源;支持 XPath/css 解析、修改与美化输出,注意避免与标准库混用、处理中文编码及大文件流式解析。

Python lxml库怎么安装和使用 lxml解析XML教程

直接用 pip 安装 lxml 就行,但要注意它依赖系统级 C 库(libxml2 和 libxslt),windows 用户基本一键搞定,macOS 和 Linux 有时需要先装依赖或换源。

安装 lxml(不同系统)

大多数情况运行这句就够了:

pip install lxml

如果报错(比如编译失败、找不到 libxml2):

立即学习Python免费学习笔记(深入)”;

  • Windows:通常没问题;若用 Anaconda,可试 conda install lxml
  • macOS(M1/M2 或新版本):先装依赖 brew install libxml2 libxslt,再 pip install;或者用 pip install lxml –binary 跳过编译
  • ubuntu/debiansudo apt-get install libxml2-dev libxslt-dev python3-dev,再 pip install
  • 国内用户可加清华源加速:pip install lxml -i https://pypi.tuna.tsinghua.edu.cn/simple/

解析 XML 的三种常用方式

lxml 支持 ElementTree 风格(类似标准库 xml.etree)和更强大的 XPath、CSS 选择器

假设有如下 XML 字符串

<a href="https://seo.sqjnqi.com/tag/python/"><b>python</b></a>入门 张三<a href="https://seo.sqjnqi.com/tag/%e6%95%b0%e6%8d%ae%e7%bb%93%e6%9e%84/"><b>数据结构</b></a> 李四

  • 用 etree.parse() 读文件
    from lxml import etree
    tree = etree.parse(“books.xml”)
    root = tree.getroot()
  • 用 etree.fromstring() 解析字符串
    root = etree.fromstring(xml_str)
  • 快速查节点(XPath)
    titles = root.xpath(“//title/text()”) # [‘Python入门’, ‘数据结构’]
    first_book = root.xpath(“//book[@id=’1′]”)[0]
    author = first_book.find(“author”).text # ‘张三’

写入和修改 XML

修改后保存很简单:

  • 改内容:elem.text = “新标题”elem.set(“id”, “3”)
  • 加子节点:new_book = etree.SubElement(root, “book”, id=”3″)
  • 保存到文件:tree.write(“new_books.xml”, encoding=”utf-8″, xml_declaration=True)
  • 美化输出(带缩进):print(etree.tostring(root, pretty_print=True, encoding=”unicode”))

常见坑和建议

  • 别混用标准库 xml.etree 和 lxml.etree —— 它们类型不兼容,比如 etree.Elementxml.etree.ElementTree.Element 不能直接传给对方方法
  • 解析含中文的 XML 时,确保声明了编码(如 ),否则可能乱码
  • 网络获取的 XML 建议加异常处理:try…except etree.XMLSyntaxError
  • 大文件别用 fromstring() 一次性加载,用 iterparse() 流式解析更省内存

基本上就这些。lxml 速度快、功能全,学完 XPath 几乎能应付所有 XML 场景。

text=ZqhQzanResources