当前位置: 首页 > article >正文

使用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 数据。

  1. 引入xml.etree.ElementTree模块
import xml.etree.ElementTree as ET
print(ET.__version__)  # 打印版本信息
  1. 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)  # 从字符串解析
  1. 获取XML格式数据并遍历节点代码如下:
xml_content = res.text # 获取响应数据
root = ET.fromstring(xml_content)# 解析 XML

# 遍历所有的 game 元素
for game in root.findall('game'):
  1. 完整的从请求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)
  1. 总结
    xml.etree.ElementTree 是处理 XML 数据的强大工具,适合解析、修改和生成 XML 文件。它的接口简单易用,能够满足大多数 XML 处理需求。如果你有更复杂的需求(如命名空间处理),可以考虑使用 lxml 库,它提供了更强大的功能和更好的性能。

http://www.kler.cn/a/467249.html

相关文章:

  • 问题:Flask应用中的用户会话(Session)管理失效
  • 【NLP高频面题 - 分布式训练篇】ZeRO主要为了解决什么问题?
  • [论文笔记]Representation Learning with Contrastive Predictive Coding
  • TPS和QPS的区别
  • Chapter4.1 Coding an LLM architecture
  • 开源模型迎来颠覆性突破:DeepSeek-V3与Qwen2.5如何重塑AI格局?
  • 2025年电气、自动化与人工智能(ICEAAI 2025)
  • wordpress报错open_basedir restriction in effect
  • Docker部署Kafka
  • 如何解决数据库和缓存不一致的问题
  • SQL-leetcode-183. 从不订购的客户
  • qt中如何判断字符串是否为数字,整数,浮点数?
  • 【LVGL】给SquareLineStudio导出的Arduino工程添加物理按键
  • 树莓派4b如何连接ov7670摄像头
  • pyinstaller冻结打包多进程程序的bug:无限创建进程直至系统崩溃
  • Computed在Vue2、Vue3写法的不同
  • 奇怪的Python:为何 list 和 dict 的元素顺序从 Python 3.7 开始保持插入顺序?
  • ROS小记
  • 提升汽车金融租赁系统的效率与风险管理策略探讨
  • DELL EMC Unity 存储系统扩容之传统池扩容
  • CSS clip-path 属性
  • Vue项目整合与优化
  • 2024秋语法分析作业-B(满分25分)
  • 【0x0014】HCI_Read_Local_Name命令详解
  • 在 macOS 上,你可以使用系统自带的 终端(Terminal) 工具,通过 SSH 协议远程连接服务器
  • 每天40分玩转Django:Django Celery