從百度地圖api獲取地鐵站經緯度
阿新 • • 發佈:2019-02-17
class GetInfo: def __init__(self,df): import pandas assert type(df) == pandas.core.frame.DataFrame and ('city' in df.columns) and ('name' in df.columns),\ 'The dataframe is not vailid' from bs4 import BeautifulSoup from urllib import request import re import pandas as pd import numpy as np import urllib.parse as urp from xml.etree import ElementTree import time self.__data__ = df def get_location(self): self.__data__['lng'] = np.nan self.__data__['lat'] = np.nan for i in self.__data__.index: self.__data__.loc[i,'lat'],self.__data__.loc[i,'lng'] = self.__get_location1__(self.__data__.loc[i,'name'],\ self.__data__.loc[i,'city']) return self.__data__ def __get_location1__(self,name,city): my_ak = ###換上自己的AK## tag = urp.quote('地鐵站') qurey = urp.quote(name) try: url = 'http://api.map.baidu.com/place/v2/search?query='+qurey+'&tag='+'®ion='+urp.quote(city)+'&output=json&ak='+my_ak req = request.urlopen(url) res = req.read().decode() lat = pd.to_numeric(re.findall('"lat":(.*)',res)[0].split(',')[0]) lng = pd.to_numeric(re.findall('"lng":(.*)',res)[0]) return lat,lng except: return 0,0