一、lxml简介 #
lxml 是Python中功能强大的HTML/XML解析库,支持XPath、CSS选择器等高级用法,常用于网页抓取和数据处理。
二、安装方法 #
介绍如何安装lxml及其依赖。
# 安装lxml主库
pip install lxml三、基本用法 #
本节介绍如何用lxml解析HTML/XML、查找元素和提取内容。
1. 解析HTML文档 #
展示如何加载和解析HTML字符串。
`python
导入lxml的HTML解析模块 #
from lxml import html
定义HTML字符串 #
html_str = """
欢迎 #
lxml示例
"""解析HTML字符串为Element对象 #
tree = html.fromstring(html_str)
打印根节点标签名 #
print(tree.tag)
### 2. 解析XML文档
> 展示如何加载和解析XML字符串。
```python
# 导入lxml的etree模块
from lxml import etree
# 定义XML字符串
xml_str = """
- 苹果
- 香蕉
"""
# 解析XML字符串为Element对象
root = etree.fromstring(xml_str)
# 打印根节点标签名
print(root.tag)3. 查找元素与提取内容 #
展示如何查找标签和提取文本内容。
`python
导入lxml的HTML解析模块 #
from lxml import html
定义HTML字符串 #
html_str = "
标题 #
内容
"解析HTML字符串 #
tree = html.fromstring(html_str)
查找第一个h1标签 #
h1 = tree.find('.//h1')
打印h1标签文本 #
print(h1.text)
查找class为info的p标签 #
p = tree.find('.//p[@class="info"]')
打印p标签文本 #
print(p.text)
## 四、进阶用法
> 本节介绍XPath、CSS选择器、节点操作和写入等高级用法。
### 1. XPath查找
> 展示如何用XPath表达式查找元素。
```python
# 导入lxml的HTML解析模块
from lxml import html
# 定义HTML字符串
html_str = "- 苹果
- 香蕉
- 橙子
"
# 解析HTML字符串
tree = html.fromstring(html_str)
# 使用XPath查找所有li节点
li_list = tree.xpath('//li')
# 遍历并打印每个li的文本
for li in li_list:
print(li.text)2. CSS选择器查找 #
展示如何用cssselect方法查找元素。
`python
导入lxml的HTML解析模块 #
from lxml import html
定义HTML字符串 #
html_str = "
内容1
内容2
"
解析HTML字符串 #
tree = html.fromstring(html_str)
使用CSS选择器查找所有class为box的div下的span #
spans = tree.cssselect('div.box > span')
遍历并打印span内容 #
for span in spans: print(span.text)
### 3. 节点操作与写入
> 展示如何修改节点内容并写入新HTML。
```python
# 导入lxml的HTML解析模块
from lxml import html, etree
# 定义HTML字符串
html_str = "原内容
"
# 解析HTML字符串
tree = html.fromstring(html_str)
# 查找p标签
p = tree.find('.//p')
# 修改p标签文本
p.text = "新内容"
# 输出修改后的HTML字符串
print(etree.tostring(tree, pretty_print=True, encoding='unicode'))五、常见应用场景 #
lxml 常用于以下场景:
- 网页爬虫与数据提取
- HTML/XML数据清洗与转换
- 结构化内容分析与批量处理
- 自动化表单/信息采集
六、参考资料 #
推荐学习和查阅的lxml相关资料。
- 官方文档:https://lxml.de/
- Python中文社区:https://www.python.org.cn/