調用高德API獲取城市公交車站信息


網上摸索了兩三天,最后還看到提供此類服務的第三方軟件,居然要收費,真的是知識創造財富啊。

其實調取地圖不難,更普通的網頁爬蟲差不多,都是用到requests這個函數,區別在於地圖平台需要自己去注冊賬號,然后申請key。

注:地圖平台建議使用高德地圖,因為每天的搜索條數多一些。

第一步,去高德地圖開發平台注冊個人賬戶,然后新建應用,最后會生成一個key

這一步不贅述了,網上有很多大神已經寫了,可參考https://zhuanlan.zhihu.com/p/96838566

第二步,python代碼(代碼是網上大神整理得來的,感謝大神)

import json
import math
import requests
import ProcessTools.tools as tools #大神寫的包
import os

key = [''] #你自己申請的key
#這里修改高德地圖搜索范圍,最好用行政區划分,這樣返回的數據條不會太多,后面方便寫成循環語句
area_code = {'羅湖區': 440303, '福田區': 440304, '南山區': 440305, '寶安區': 440306, '龍崗區': 440307, '鹽田區': 440308,
             '龍華區': 440309, '坪山區': 440310, '光明區': 440311}
area_road = {'羅湖區': [], '福田區': [], '南山區': [], '寶安區': [], '龍崗區': [], '鹽田區': [],
           '龍華區': [], '坪山區': [], '光明區': []}

def get_busstop(area: str, page: int):
    data = []   # 保存指定區域的公交站點名稱
    parameters = {'key': key[0], 
                  'types': 150700&150701&150702&150703, #高德POI分類編碼表與城市編碼表
                  'city': area_code[area], 
                  'citylimit': 'true', 
                  'offset': 25,
                  'page': page, 
                  'output': 'JSON'}
    res = requests.get('https://restapi.amap.com/v3/place/text?parameters', params=parameters)
    json_dict = json.loads(res.text)
    poi_list = json_dict['pois']
    count = json_dict['count']  # 當前區域公交站點個數
    for poi in poi_list:
        data.append(poi['name']+ '\t' + poi['address'] + '\t' + poi['location'] + '\t' + poi['adname'])
    return count, data

def mymain():
    for area in area_code.keys():
        print("當前區域:%s   當前頁數:1" % area)
        count, roads_info = get_busstop(area, 1)
        area_road[area] = roads_info
        count = float(count)
        total_pages = int(math.ceil(count / 25.0))
        for page in range(2, total_pages + 1):
            print("當前區域: %s  當前頁數: %s" % (area, page))
            try:
                count, roads_info = get_busstop(area, page)
                area_road[area].extend(roads_info)
            except:
                print("未完成")
                continue
    for area, roads_info in area_road.items():
        print("保存區域%s:" % area)
        current_path = os.getcwd()
        tools.saver(roads_info,file_path= current_path+r'\data-output\busstop\{}.txt'.format(area))
    print("保存完畢!!!")

mymain()

最后,會在路徑下保存所有行政區的所有車站信息。

 

 

 

 

參考視頻網址:https://www.bilibili.com/video/BV1na411w7df?from=search&seid=1163701277294648103

歡迎討論學習!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM