获取省市区JSON

helei 2023-4-4 700 4/4

数据来源
http://datav.aliyun.com/tools/atlas/

他这个接口逻辑是按层查询的,获取到第一层的 省份列表后,拿code去查这个省下面的市,然后拿每一个市的code再去查下面的区,以此类推,但是有些城市例如北京,只有2层,有的城市例如山东,有3层的,所以选择使用递归的方式去抓取数据

import requests
mainCode = 100000
mainName = '中华人民共和国'
def getList(rootCode,rootName,lv):
    myData={
        'code':rootCode,
        'name':rootName,
    }
    api = 'https://geo.datav.aliyun.com/areas/bound/geojson?code={}_full'.format(rootCode)
    data = requests.get(api)
    if data.json():
        arr = []
        index = 1
        for i in data.json().get('features'):
            item = i.get('properties')
            mycode = item.get('adcode')
            myname = item.get('name')
            print('{}>  {}'.format('|' + '=========' * lv, myname))
            childrenNum = item.get('childrenNum')
            if not mycode == rootCode and mycode and myname and not childrenNum == 0:
                thisData = getList(mycode, myname,lv+1)
                arr = [*arr, thisData]
            else:
                arr = [*arr, {
                    'code': mycode,
                    'name': myname,
                }]
        if not len(arr) == 0:
            myData['list'] = arr
        return myData
    else:
        return {}
def main():
    arr = getList(mainCode,mainName,1)
    with open('./省市区.json','w') as file:
        file.write(str(arr))
        file.close()
if __name__=='__main__':
    main()
- THE END -

helei

4月04日09:19

最后修改:2023年4月4日
0

非特殊说明,本博所有文章均为博主原创。