1. 程式人生 > 實用技巧 >基於Dijkstra演算法的武漢地鐵路徑規劃!

基於Dijkstra演算法的武漢地鐵路徑規劃!

前言

最近爬取了武漢地鐵線路的資訊,通過呼叫高德地圖的api 獲得各個站點的進度和緯度資訊,使用Dijkstra演算法對路徑進行規劃。

1.資料爬取

首先是需要獲得武漢各個地鐵的地鐵站資訊,通過爬蟲爬取武漢各個地鐵站點的資訊,並存儲到xlsx檔案中

武漢地鐵線路圖,2021最新武漢地鐵線路圖,武漢地鐵地圖-武漢本地寶wh.bendibao.com

方法:requests、BeautifulSoup、pandas

import requests
from bs4 import BeautifulSoup
import pandas as pd
 
def spyder():
    #獲得武漢的地鐵資訊
    url='http://wh.bendibao.com/ditie/linemap.shtml'
    user_agent='Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50'
    headers = {'User-Agent': user_agent}
    r = requests.get(url, headers=headers)
    r.encoding = r.apparent_encoding
    soup = BeautifulSoup(r.text, 'lxml')
    all_info = soup.find_all('div', class_='line-list')
    df=pd.DataFrame(columns=['name','site'])
    for info in all_info:
        title=info.find_all('div',class_='wrap')[0].get_text().split()[0].replace('線路圖','')
        station_all=info.find_all('a',class_='link')
        for station in station_all:
            station_name=station.get_text()
            temp={'name':station_name,'site':title}
            df =df.append(temp,ignore_index=True)
    df.to_excel('./subway.xlsx',index=False)

我們將爬取的地鐵資訊儲存到excel檔案中

如果要做路徑規劃的話,我們還需要知道地鐵站的位置資訊

因此我們選擇了高德地圖的api介面

2.高德地圖api介面配置

高德開放平臺 | 高德地圖 APIlbs.amap.com