如何使用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) # 从字符串解析
3获取XML格式数据并遍历节点代码如下:
xml_content = res.text # 获取响应数据 root = ET.fromstring(xml_content)# 解析 XML # 遍历所有的 game 元素 for game in root.findall('game'):
4.完整的从请求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)
5.总结
xml.etree.ElementTree 是处理 XML 数据的强大工具,适合解析、修改和生成 XML 文件。它的接口简单易用,能够满足大多数 XML 处理需求。如果你有更复杂的需求(如命名空间处理),可以考虑使用 lxml 库,它提供了更强大的功能和更好的性能。
到此这篇关于使用Python的xml.etree.ElementTree模块解析和操作 XML 数据的文章就介绍到这了,更多相关Python xml.etree.ElementTree解析xml内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!