使用Python的xml.etree.ElementTree模块解析和操作 XML 数据
Date: 2025.01.04 17:30:45 author: lijianzhan
简述:xml.etree.ElementTree 是 Python 标准库的一部分,而且是 Python 标准库中用于解析和操作 XML 数据的模块,因此不需要通过 pip install 安装。只要你安装了 Python(无论是 Python 2.x 还是 Python 3.x),就可以直接使用xml.etree.ElementTree 。它提供了一种简单而高效的方式来处理 XML 文件,支持解析、创建、修改和查询 XML 数据。
- 引入xml.etree.ElementTree模块
import xml.etree.ElementTree as ET
print(ET.__version__) # 打印版本信息
- xml.etree.ElementTree 的详细介绍,ElementTree 基本概念: Element:表示 XML 中的一个节点,包含标签(tag),属性(attrib)和子节点(children),ElementTree:表示整个 XML 文档的树结构。
知道基本概念后,可以使用内部方法解析XML。代码示例如下:
#解析 XML
1.从文件解析
import xml.etree.ElementTree as ET
# 解析 XML 文件
tree = ET.parse('data.xml')
root = tree.getroot() # 获取根元素
2.从字符串解析
xml_data = '''
<root>
<child id="1">Text1</child>
<child id="2">Text2</child>
</root>
'''
root = ET.fromstring(xml_data) # 从字符串解析
- 获取XML格式数据并遍历节点代码如下:
xml_content = res.text # 获取响应数据
root = ET.fromstring(xml_content)# 解析 XML
# 遍历所有的 game 元素
for game in root.findall('game'):
- 完整的从请求http接口,获取XML数据并解析得到数据的脚步实例,代码如下:
import time
import requests
from time import sleep
import xml.etree.ElementTree as ET
class GetM061Com:
def getLogin(self, username, password):
print("登录模块")
url = 'http://www.baidu.com?mode=login'
headers = {
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1'
}
data = {
'mode': 'login',
'username': username,
'password': password,
}
res = requests.post(url, headers=headers, data=data)
if res.status_code == 200:
xml_content = res.text # 获取响应数据
root = ET.fromstring(xml_content) # 解析XML数据
return root.find('uid').text
def getIndex(self, uid):
print("首页模块")
if not uid:
print("未获取到有效的 uid")
return
# 获取当前的秒级时间戳
current_time_s = time.time()
# 将秒级时间戳转换为毫秒级时间戳
current_time_ms = int(current_time_s * 1000)
sleep(3)
url = 'http://www.baidu.com?mode=index'
headers = {
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1'
}
data = {
'uid': uid,
'mode': 'home',
'ts': current_time_ms
}
res = requests.post(url, headers=headers, data=data)
if res.status_code == 200:
xml_content = res.text # 获取响应数据
root = ET.fromstring(xml_content)# 解析 XML
# 遍历所有的 game 元素
for game in root.findall('game'):
game_id = game.get('id')
gtype = game.find('gtype').text
if gtype == 'football':
print("-足球")
print("game_id:" + game_id)
elif gtype == 'basketball':
print("-篮球")
print("game_id:" + game_id)
if __name__ == '__main__':
username = ''# 账号
password = ''# 密码
uid = GetM061Com().getLogin(username, password)
GetM061Com().getIndex(uid)
- 总结
xml.etree.ElementTree 是处理 XML 数据的强大工具,适合解析、修改和生成 XML 文件。它的接口简单易用,能够满足大多数 XML 处理需求。如果你有更复杂的需求(如命名空间处理),可以考虑使用 lxml 库,它提供了更强大的功能和更好的性能。