"返回str类型的经纬度":url=https://restapi.amap.com/v3/geocode/geo?address=+address+key=+self.key#将一些符。Python对城市距离自动化爬取【python小型项目】( 五 )。" />

Python对城市距离自动化爬取【python小型项目】( 五 )


通过获取经纬度:
def get_coordinatesViaaddress(self, address:"地点名") -> "返回str类型的经纬度":url='https://restapi.amap.com/v3/geocode/geo?address='+address+'&output=json&key='+self.key#将一些符号进行URL编码newUrl = parse.quote(url, safe="/:=&?#+!$,;'@()*")coor = json.loads(urllib.request.urlopen(newUrl).read())['geocodes'][0]['location']logging.basicConfig(stream=open(config.src_path + '/log/syserror.log', encoding="utf-8", mode="a"), level = logging.DEBUG, format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')logger = logging.getLogger(__name__)logger.info("查询{}的经纬度:{}!".format(address,coor))# print()return coor
通过城市 list 获取两点之间距离和出行方式:
def get_disViaCoordinates(self,addList:"一个列表存放地址数据") ->"{'origin':[],'destination':[],'distance':[],'route':[]}":dict_route = {'origin':[],'destination':[],'distance':[],'route':[]}for m in range(len(addList)):for n in range(m,len(addList)):if m!=n:print('get_tetst',m,n)#从addList中得到地址的名称,经纬度origin = addList[m][2]destination = addList[n][2]url2='https://restapi.amap.com/v3/direction/driving?origin='+origin+'&destination='+destination+'&extensions=all&output=json&key=3e2235273dd2c0ca2421071fbb96def4'#编码newUrl2 = parse.quote(url2, safe="/:=&?#+!$,;'@()*[]")#发送请求response2 = urllib.request.urlopen(newUrl2)#接收数据data2 = response2.read()#解析json文件jsonData2 = json.loads(data2)#输出该json中所有road的值# print(jsonData2)road=jsonpath.jsonpath(jsonData2,'$..road')#从json文件中提取距离distance = jsonData2['route']['paths'][0]['distance']#字典dict_route中追加数据dict_route.setdefault("origin",[]).append(addList[m][0])dict_route.setdefault("destination",[]).append(addList[n][0])dict_route.setdefault("distance",[]).append(distance)dict_route.setdefault("route",[]).append(road)return dict_route
数据库样品:
数据库的内容我就用 json 表示了哈:
[{"address": "湖北省武汉市江岸区","ad_type": 1,"coordinates": "114.278760,30.592688"},{"address": "湖北省武汉市江汉区","ad_type": 1,"coordinates": "114.270871,30.601430"},{"address": "湖北省武汉市乔口区","ad_type": 1,"coordinates": "114.214920,30.582202"},...共103条地点数据
,以前三个数据为例做出查询,和返回 。
[{"origin": "湖北省武汉市江岸区","destination": "湖北省武汉市江汉区","route": "['台北一路', '新华路']","distance": "1520"},{"origin": "湖北省武汉市江岸区","destination": "湖北省武汉市乔口区","route": "['台北一路', '台北路', '解放大道', '解放大道', '解放大道', '解放大道', '解放大道', '解放大道', '解放大道', '解放大道', '二环线辅路', '沿河大道']","distance": "9197"},{"origin": "湖北省武汉市江汉区","destination": "湖北省武汉市乔口区","route": "['新华路', '建设大道', '建设大道', '建设大道', '建设大道', '沿河大道']","distance": "7428"}]
BUG:
问题:在 /.py,调用格比 /.py 接口
问题:当我们访问隔壁文件夹的接口时,如果发现调用不了,可以在当前文件的头部加入:
import sys,osabsPath = os.path.abspath(__file__)#返回代码段所在的位置,肯定是在某个.py文件中temPath = os.path.dirname(absPath)#往上返回一级目录,得到文件所在的路径temPath = os.path.dirname(temPath)#在往上返回一级,得到文件夹所在的路径sys.path.append(temPath)
将当前文件夹所在的路径加入到系统路径中