如何使用Python的xml.etree.ElementTree模塊解析和操作 XML 數(shù)據(jù)
Date: 2025.01.04 17:30:45 author: lijianzhan
簡述:xml.etree.ElementTree 是 Python 標準庫的一部分,而且是 Python 標準庫中用于解析和操作 XML 數(shù)據(jù)的模塊,因此不需要通過 pip install 安裝。只要你安裝了 Python(無論是 Python 2.x 還是 Python 3.x),就可以直接使用xml.etree.ElementTree 。它提供了一種簡單而高效的方式來處理 XML 文件,支持解析、創(chuàng)建、修改和查詢 XML 數(shù)據(jù)。
引入xml.etree.ElementTree模塊
import xml.etree.ElementTree as ET print(ET.__version__) # 打印版本信息
xml.etree.ElementTree 的詳細介紹,ElementTree 基本概念: Element:表示 XML 中的一個節(jié)點,包含標簽(tag),屬性(attrib)和子節(jié)點(children),ElementTree:表示整個 XML 文檔的樹結(jié)構。
知道基本概念后,可以使用內(nèi)部方法解析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格式數(shù)據(jù)并遍歷節(jié)點代碼如下:
xml_content = res.text # 獲取響應數(shù)據(jù) root = ET.fromstring(xml_content)# 解析 XML # 遍歷所有的 game 元素 for game in root.findall('game'):
4.完整的從請求http接口,獲取XML數(shù)據(jù)并解析得到數(shù)據(jù)的腳步實例,代碼如下:
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 # 獲取響應數(shù)據(jù) root = ET.fromstring(xml_content) # 解析XML數(shù)據(jù) return root.find('uid').text def getIndex(self, uid): print("首頁模塊") if not uid: print("未獲取到有效的 uid") return # 獲取當前的秒級時間戳 current_time_s = time.time() # 將秒級時間戳轉(zhuǎn)換為毫秒級時間戳 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 # 獲取響應數(shù)據(jù) 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.總結(jié)
xml.etree.ElementTree 是處理 XML 數(shù)據(jù)的強大工具,適合解析、修改和生成 XML 文件。它的接口簡單易用,能夠滿足大多數(shù) XML 處理需求。如果你有更復雜的需求(如命名空間處理),可以考慮使用 lxml 庫,它提供了更強大的功能和更好的性能。
到此這篇關于使用Python的xml.etree.ElementTree模塊解析和操作 XML 數(shù)據(jù)的文章就介紹到這了,更多相關Python xml.etree.ElementTree解析xml內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python數(shù)據(jù)結(jié)構隊列解決約瑟夫斯問題
這篇文章主要介紹了Python數(shù)據(jù)結(jié)構隊列解決約瑟夫斯問題2023-02-02