Python解析XML的几种常见方法的介绍

python解析XML常见的有三种方法:
一是xml.dom.*模块,它是W3C DOM API的实现,若需要处理DOM API则该模块很适合,注意xml.dom包里面有许多模块,须区分它们间的不同;
二是xml.sax.*模块,它是SAX API的实现,这个模块牺牲了便捷性来换取速度和内存占用,SAX是一个基于事件的API,这就意味着它可以“在空中”处理庞大数量的的文档,不用完全加载进内存;
三是xml.etree.ElementTree模块(简称 ET),它提供了轻量级的Python式的API,相对于DOM来说ET 快了很多,而且有很多令人愉悦的API可以使用,相对于SAX来说ET的ET.iterparse也提供了 “在空中” 的处理方式,没有必要加载整个文档到内存,ET的性能的平均值和SAX差不多,但是API的效率更高一点而且使用起来很方便。

二、详解
解析的xml文件(country.xml):
<?xml version="1.0"?>
<data>
  <country name="Singapore">
    <rank>4</rank>
    <year>2011</year>
    <gdppc>59900</gdppc>
    <neighbor name="Malaysia" direction="N"/>
  </country>
  <country name="Panama">
    <rank>68</rank>
    <year>2011</year>
    <gdppc>13600</gdppc>
    <neighbor name="Costa Rica" direction="W"/>
    <neighbor name="Colombia" direction="E"/>
  </country>
</data>

1、xml.etree.ElementTree
ElementTree生来就是为了处理XML,
它在Python标准库中有两种实现:
一种是纯Python实现的,如xml.etree.ElementTree,
另一种是速度快一点的xml.etree.cElementTree。
注意:尽量使用C语言实现的那种,因为它速度更快,而且消耗的内存更少。从Python 3.3开始ElementTree模块会自动寻找可用的C库来加快速度,所以只需要import xml.etree.ElementTree就可以了。

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
# Created on 2018-09-11 16:47:26
# Project: XML

from pyspider.libs.base_handler import *
import xml.etree.ElementTree as ET

class Handler(BaseHandler):
crawl_config = {
}

@every(minutes=24 * 60)
def on_start(self):
self.crawl('http://wthrcdn.etouch.cn/WeatherApi?citykey=101010100', callback=self.index_page)

@config(age=0)
def index_page(self, response):
root = ET.fromstring(response.text) #从字符串传递xml
print (root.find('yesterday').find("date_1").text )
posted @   马波凯  阅读(151)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示