import urllib #用来抓去网站信息的模块
from xml.parsers.expat import ParserCreate #解析器
import re #正则表达式
try:
#创建链接实例,获取百度天气API
page = urllib.urlopen('http://api.map.baidu.com/telematics/v2/weather?location=%E5%8C%97%E4%BA%AC&ak=B8aced94da0b345579f481a1294c9094')
#读取实例内容,赋值给XML
XML = page.read()
finally:
page.close()
a = re.compile(r'^\s+$') #空格,正则表达式
class BaiduWeatherSaxHandler(object):
def __init__(self):
self.L = [] #创建一个list装XML中的关键数据
self.R = False
self.d = ['currentCity','date','weather','wind','temperature']
def start_element(self,name,attrs):
# print ('sax:start_element:%s,attrs:%s' % (name,str(attrs)))
if name in self.d:
self.R = True
def char_data(self, text):
if a.match(text): #去掉空格的(没内容的)
pass
elif self.R:
self.L.append(text)
self.R = False
# else:
# print ('sax:char_data: %s' % text)
def end_element(self, name):
# print ('sax:end_element: %s' % name)
if name == 'results':
for x in self.L:
print x
raise SystemExit # 关闭程序
handler =BaiduWeatherSaxHandler() #设置解析方法
parser =ParserCreate() #创建解析器
# 设置解析器参数
parser.returns_unicode = True #返回unicode编码
parser.StartElementHandler = handler.start_element
parser.EndElementHandler = handler.end_element
parser.CharacterDataHandler = handler.char_data
parser.Parse(XML) #解析文本
python解析xml
最新推荐文章于 2023-06-26 16:01:16 发布