电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python 解析簡單的XML數據

瀏覽:4日期:2022-07-16 13:10:32

問題

你想從一個簡單的XML文檔中提取數據。

解決方案

可以使用 xml.etree.ElementTree 模塊從簡單的XML文檔中提取數據。為了演示,假設你想解析Planet Python上的RSS源。下面是相應的代碼:

from urllib.request import urlopenfrom xml.etree.ElementTree import parse# Download the RSS feed and parse itu = urlopen(’http://planet.python.org/rss20.xml’)doc = parse(u)# Extract and output tags of interestfor item in doc.iterfind(’channel/item’): title = item.findtext(’title’) date = item.findtext(’pubDate’) link = item.findtext(’link’) print(title) print(date) print(link) print()

運行上面的代碼,輸出結果類似這樣:

Steve Holden: Python for Data AnalysisMon, 19 Nov 2012 02:13:51 +0000http://holdenweb.blogspot.com/2012/11/python-for-data-analysis.html

Vasudev Ram: The Python Data model (for v2 and v3)Sun, 18 Nov 2012 22:06:47 +0000http://jugad2.blogspot.com/2012/11/the-python-data-model.html

Python Diary: Been playing around with Object DatabasesSun, 18 Nov 2012 20:40:29 +0000http://www.pythondiary.com/blog/Nov.18,2012/been-...-object-databases.html

Vasudev Ram: Wakari, Scientific Python in the cloudSun, 18 Nov 2012 20:19:41 +0000http://jugad2.blogspot.com/2012/11/wakari-scientific-python-in-cloud.html

Jesse Jiryu Davis: Toro: synchronization primitives for Tornado coroutinesSun, 18 Nov 2012 20:17:49 +0000http://feedproxy.google.com/~r/EmptysquarePython/~3/_DOZT2Kd0hQ/

很顯然,如果你想做進一步的處理,你需要替換 print() 語句來完成其他有趣的事。

討論

在很多應用程序中處理XML編碼格式的數據是很常見的。不僅是因為XML在Internet上面已經被廣泛應用于數據交換,同時它也是一種存儲應用程序數據的常用格式(比如字處理,音樂庫等)。接下來的討論會先假定讀者已經對XML基礎比較熟悉了。

在很多情況下,當使用XML來僅僅存儲數據的時候,對應的文檔結構非常緊湊并且直觀。例如,上面例子中的RSS訂閱源類似于下面的格式:

<?xml version='1.0'?><rss version='2.0' xmlns:dc='http://purl.org/dc/elements/1.1/'> <channel> <title>Planet Python</title> <link>http://planet.python.org/</link> <language>en</language> <description>Planet Python - http://planet.python.org/</description> <item> <title>Steve Holden: Python for Data Analysis</title> <guid>http://holdenweb.blogspot.com/...-data-analysis.html</guid> <link>http://holdenweb.blogspot.com/...-data-analysis.html</link> <description>...</description> <pubDate>Mon, 19 Nov 2012 02:13:51 +0000</pubDate> </item> <item> <title>Vasudev Ram: The Python Data model (for v2 and v3)</title> <guid>http://jugad2.blogspot.com/...-data-model.html</guid> <link>http://jugad2.blogspot.com/...-data-model.html</link> <description>...</description> <pubDate>Sun, 18 Nov 2012 22:06:47 +0000</pubDate> </item> <item> <title>Python Diary: Been playing around with Object Databases</title> <guid>http://www.pythondiary.com/...-object-databases.html</guid> <link>http://www.pythondiary.com/...-object-databases.html</link> <description>...</description> <pubDate>Sun, 18 Nov 2012 20:40:29 +0000</pubDate> </item> ... </channel></rss>

xml.etree.ElementTree.parse() 函數解析整個XML文檔并將其轉換成一個文檔對象。 然后,你就能使用 find() 、iterfind() 和 findtext() 等方法來搜索特定的XML元素了。 這些函數的參數就是某個指定的標簽名,例如 channel/item 或 title 。 每次指定某個標簽時,你需要遍歷整個文檔結構。每次搜索操作會從一個起始元素開始進行。 同樣,每次操作所指定的標簽名也是起始元素的相對路徑。 例如,執行 doc.iterfind(’channel/item’) 來搜索所有在 channel 元素下面的 item 元素。 doc 代表文檔的最頂層(也就是第一級的 rss 元素)。 然后接下來的調用 item.findtext() 會從已找到的 item 元素位置開始搜索。 ElementTree 模塊中的每個元素有一些重要的屬性和方法,在解析的時候非常有用。 tag 屬性包含了標簽的名字,text 屬性包含了內部的文本,而 get() 方法能獲取屬性值。例如:

>>> doc<xml.etree.ElementTree.ElementTree object at 0x101339510>>>> e = doc.find(’channel/title’)>>> e<Element ’title’ at 0x10135b310>>>> e.tag’title’>>> e.text’Planet Python’>>> e.get(’some_attribute’)>>>

有一點要強調的是 xml.etree.ElementTree 并不是XML解析的唯一方法。對于更高級的應用程序,你需要考慮使用 lxml 。它使用了和ElementTree同樣的編程接口,因此上面的例子同樣也適用于lxml。你只需要將剛開始的import語句換成 from lxml.etree import parse 就行了。lxml 完全遵循XML標準,并且速度也非常快,同時還支持驗證,XSLT和XPath等特性。

以上就是Python 解析簡單的XML數據的詳細內容,更多關于Python 解析XML的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 大数据营销公司_舆情监测软件_上海SEO公司-文军营销官网 | 深圳彩钢板_彩钢瓦_岩棉板_夹芯板_防火复合彩钢板_长鑫 | 医疗仪器模块 健康一体机 多参数监护仪 智慧医疗仪器方案定制 血氧监护 心电监护 -朗锐慧康 | 缠膜机|缠绕包装机|无纺布包装机-济南达伦特机械设备有限公司 | 废水处理-废气处理-工业废水处理-工业废气处理工程-深圳丰绿环保废气处理公司 | 国资灵活用工平台_全国灵活用工平台前十名-灵活用工结算小帮手 | 塑胶地板-商用PVC地板-pvc地板革-安耐宝pvc塑胶地板厂家 | 水稻烘干机,小麦烘干机,大豆烘干机,玉米烘干机,粮食烘干机_巩义市锦华粮食烘干机械制造有限公司 水环真空泵厂家,2bv真空泵,2be真空泵-淄博真空设备厂 | 厂房出售_厂房仓库出租_写字楼招租_土地出售-中苣招商网-中苣招商网 | sus630/303cu不锈钢棒,440C/430F/17-4ph不锈钢研磨棒-江苏德镍金属科技有限公司 | 大功率金属激光焊接机价格_不锈钢汽车配件|光纤自动激光焊接机设备-东莞市正信激光科技有限公司 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 刺绳_刀片刺网_刺丝滚笼_不锈钢刺绳生产厂家_安平县浩荣金属丝网制品有限公司-安平县浩荣金属丝网制品有限公司 | 工业机械三维动画制作 环保设备原理三维演示动画 自动化装配产线三维动画制作公司-南京燃动数字 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 自恢复保险丝_贴片保险丝_力特保险丝_Littelfuse_可恢复保险丝供应商-秦晋电子 | 净水器代理,净水器招商,净水器加盟-FineSky德国法兹全屋净水 | 罗茨真空机组,立式无油往复真空泵,2BV水环真空泵-力侨真空科技 | 珠海冷却塔降噪维修_冷却塔改造报价_凉水塔风机维修厂家- 广东康明节能空调有限公司 | RS系列电阻器,RK_RJ启动调整电阻器,RQ_RZ电阻器-上海永上电器有限公司 | 派克防爆伺服电机品牌|国产防爆伺服电机|高低温伺服电机|杭州摩森机电科技有限公司 | 气动隔膜阀_气动隔膜阀厂家_卫生级隔膜阀价格_浙江浙控阀门有限公司 | 电动卫生级调节阀,电动防爆球阀,电动软密封蝶阀,气动高压球阀,气动对夹蝶阀,气动V型调节球阀-上海川沪阀门有限公司 | 防勒索软件_数据防泄密_Trellix(原McAfee)核心代理商_Trellix(原Fireeye)售后-广州文智信息科技有限公司 | 钢板仓,大型钢板仓,钢板库,大型钢板库,粉煤灰钢板仓,螺旋钢板仓,螺旋卷板仓,骨料钢板仓 | 扒渣机,铁水扒渣机,钢水扒渣机,铁水捞渣机,钢水捞渣机-烟台盛利达工程技术有限公司 | 工程管道/塑料管材/pvc排水管/ppr给水管/pe双壁波纹管等品牌管材批发厂家-河南洁尔康建材 | 无锡市珂妮日用化妆品有限公司|珂妮日化官网|洗手液厂家 | 地源热泵一体机,地源热泵厂家-淄博汇能环保设备有限公司 | 纯水电导率测定仪-万用气体检测仪-低钠测定仪-米沃奇科技(北京)有限公司www.milwaukeeinst.cn 锂辉石检测仪器,水泥成分快速分析仪-湘潭宇科分析仪器有限公司 手术室净化装修-手术室净化工程公司-华锐手术室净化厂家 | 防爆正压柜厂家_防爆配电箱_防爆控制箱_防爆空调_-盛通防爆 | 北京开业庆典策划-年会活动策划公司-舞龙舞狮团大鼓表演-北京盛乾龙狮鼓乐礼仪庆典策划公司 | 临海涌泉蜜桔官网|涌泉蜜桔微商批发代理|涌泉蜜桔供应链|涌泉蜜桔一件代发 | 闭端端子|弹簧螺式接线头|防水接线头|插线式接线头|端子台|电源线扣+护线套|印刷电路板型端子台|金笔电子代理商-上海拓胜电气有限公司 | 北京网站建设首页,做网站选【优站网】,专注北京网站建设,北京网站推广,天津网站建设,天津网站推广,小程序,手机APP的开发。 | 广州展台特装搭建商|特装展位设计搭建|展会特装搭建|特装展台制作设计|展览特装公司 | 带式过滤机厂家_价格_型号规格参数-江西核威环保科技有限公司 | 次氯酸钠厂家,涉水级次氯酸钠,三氯化铁生产厂家-淄博吉灿化工 | 北京浩云律师事务所-企业法律顾问_破产清算等公司法律服务 | 高压包-点火器-高压发生器-点火变压器-江苏天网 | 天津云仓-天津仓储物流-天津云仓一件代发-顺东云仓 | YT保温材料_YT无机保温砂浆_外墙保温材料_南阳银通节能建材高新技术开发有限公司 | 机床主轴维修|刀塔维修|C轴维修-常州翔高精密机械有限公司 |