Discuss / Python / 用的高德的api,需要可以去申请一个

用的高德的api,需要可以去申请一个

Topic source

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)

Gravitoni

#2 Created at ... [Delete] [Delete and Lock User]

666


  • 1

Reply