from xml.parsers.expat import ParserCreate
from urllib import request,parse
import json
class DefaultSaxHander:
def start_element(self,name,attr):
print('sax:start_element: %s,attrs: %s' % (name,str(attr)))
def end_element(self,name):
print('sax:end_element: %s' % name)
def char_element(self,text):
print('char_element: %s' % text)
hander=DefaultSaxHander()
parser=ParserCreate()
parser.StartElementHandler=hander.start_element # 这里用到回调函数,我们的应用调用库,库里的代码需要传入一个回调函数(这里是start_element)
parser.EndElementHandler=hander.end_element
parser.CharacterDataHandler=hander.char_element
dlnm_key='高德申请一个' # 地理编码api key
tqcx_key='高德申请一个' # 天气查询api key
address=parse.quote('合肥市') # urllib.request.urlopen不支持中英文混合的字符串。应使用urllib.parse.quote进行转换。
with request.urlopen('https://restapi.amap.com/v3/geocode/geo?address=%s&key=%s'% (address,dlnm_key)) as f:
# print(json.loads(f.read()))
adcode=json.loads(f.read())['geocodes'][0]['adcode'] # 从地理编码api获取地理编码
with request.urlopen('https://restapi.amap.com/v3/weather/weatherInfo?city=%s&key=%s&output=xml'% (adcode,tqcx_key)) as f:
xmlre=f.read().decode('utf-8') # 读取的bytes要记得解码
parser.Parse(xmlre)
666
Sign in to make a reply
懒懒的小懒
from xml.parsers.expat import ParserCreate
from urllib import request,parse
import json
class DefaultSaxHander:
def start_element(self,name,attr):
print('sax:start_element: %s,attrs: %s' % (name,str(attr)))
def end_element(self,name):
print('sax:end_element: %s' % name)
def char_element(self,text):
print('char_element: %s' % text)
hander=DefaultSaxHander()
parser=ParserCreate()
parser.StartElementHandler=hander.start_element # 这里用到回调函数,我们的应用调用库,库里的代码需要传入一个回调函数(这里是start_element)
parser.EndElementHandler=hander.end_element
parser.CharacterDataHandler=hander.char_element
dlnm_key='高德申请一个' # 地理编码api key
tqcx_key='高德申请一个' # 天气查询api key
address=parse.quote('合肥市') # urllib.request.urlopen不支持中英文混合的字符串。应使用urllib.parse.quote进行转换。
with request.urlopen('https://restapi.amap.com/v3/geocode/geo?address=%s&key=%s'% (address,dlnm_key)) as f:
# print(json.loads(f.read()))
adcode=json.loads(f.read())['geocodes'][0]['adcode'] # 从地理编码api获取地理编码
with request.urlopen('https://restapi.amap.com/v3/weather/weatherInfo?city=%s&key=%s&output=xml'% (adcode,tqcx_key)) as f:
xmlre=f.read().decode('utf-8') # 读取的bytes要记得解码
parser.Parse(xmlre)