本帖最后由 wushaominkk 于 2019-1-11 16:37 编辑
说一些无关的:年前被裁,准备找一份离家近的工作,想偷懒在采集一些招聘信息,把招聘公司的地址给拔下来,然后计算出最近地铁站到公司的地址,离得比较近的就去看下公司里面有没有适合我的工作。(估计也就只有销售、客服之类的工作才有人要啊,难受!还是先回家过年,上一份工作也是客服...)最后给各位看官比个心,祝新年快乐!
- 编程语言 python 3.71
- 引用库:
import urllib.parse
import urllib.request
import json - 百度地图webapi相关服务文档
网页查询图:
python运行结果图
下面贴出代码:
[Python] 纯文本查看 复制代码 '''
文件名:L17.py
作者:小饭团
创建时间:2019年1月11日15:17:03
文件描述:调用Web服务API接口,百度地图路线规划 正/逆地理编码
'''
#-*- coding:utf-8 -*-
import urllib.parse
import urllib.request
import json
key='62PM27fx1Fbhq1pOWdpRlWt2o9B8tL9O'
#自定义类型
'''
属性名1:x 用于存储经度 类型 float
属性名2:y 用于存储纬度 类型 float
'''
class locationXY:
def __init__(self,x,y):
self.x=x
self.y=y
#正/逆地理编码
'''
函数名:getLocation
参数一:address 地名 类型 str 内部字符串类型
返回自定义类型数据 locationXY
'''
def getLocation(address):
data = urllib.parse.urlencode({'address': address, 'output': 'json','ak':key})
response = urllib.request.urlopen('http://api.map.baidu.com/geocoder/v2/?%s' % data)
html = response.read()
data = html.decode('utf-8')
result=json.loads(data)
lng=(result['result']['location']['lng'])
lat=(result['result']['location']['lat'])
l=locationXY(lng,lat)
return l
#百度地图路线规划服务
'''
函数名:计算所有路线
参数一:origin 起点位置 自定义类型locationXY
参数二:destionation 终点位置 自定义类型locationXY
无返回值
'''
def 计算所有路线(origin,destionation):
'''
tactics_incity 市内公交换乘策略
可选,默认为0
可选值:
0 推荐
1 少换乘
2 少步行
3 不坐地铁
4 时间短
5 地铁优先
'''
tactics_incity=0
data = urllib.parse.urlencode({'origin':'%s,%s'%(origin.y,origin.x),'destination':'%s,%s'%(destionation.y,destionation.x),'tactics_incity':tactics_incity,'ak':key})
response = urllib.request.urlopen('http://api.map.baidu.com/direction/v2/transit?%s' % data)
html = response.read()
data = html.decode('utf-8')
result = json.loads(data)
#print(data)
路线总数 = result['result']['total']
if (result['status']==0):
for x in range(路线总数):
if (result['status']==0):
distance=result['result']['routes'][x]['distance']
duration=result['result']['routes'][x]['duration']
print('路线:%s,距离%s米,花费%s分钟'%(x,distance,duration/60))
else:
print('error : %d'%result['status'])
'''
status 备注
0:成功
1:服务器内部错误
2:参数无效
1001:没有公交方案
1002:没有匹配的POI
'''
def main():
l1 = locationXY(113.464838,23.111949)#大沙东地铁站的坐标
l2 = getLocation('御富科贸园b2座205-20')
#print("%s\n%s"%(l1.x,l1.y))
计算所有路线(l1,l2)
#l2 =
if __name__ == '__main__':
main()
PS:代码里面的key,要换成自己的key。创建的应用类型为服务端,然后将自己电脑的ip加进去就可以了。 |