由于写论文需要数据,钻研许久终于搞懂。
注意是驾驶距离,不是直线距离。
爬虫分为两步:首先,爬取经纬度;其次,利用经纬度爬取距离。
假设我们要获得黑河到腾冲的驾驶距离,首先要获得两地坐标。
import requests
import json
def get_coord(county): # 设置函数,返回字典
result = {}
url = 'http://restapi.amap.com/v3/config/district' # 高德API
params = {'key':'填写自己申请的密钥', # 参数:高德密钥
'keywords': county,
'subdistrict': 0 } # 0:不返回下级行政区
try:
res = requests.get(url,params)
jd = json.loads(res.text)
result['county'] = county
result['coord'] = jd['districts'][0]['center']
return result
except:
result['county'] = county
result['coord'] = '未获取经纬度'
return result
coord = get_coord('黑河市')
coord
得到黑河市和腾冲市坐标如下图所示:
进而根据所得的坐标,计算两地驾驶距离。
import requests
import json
url = 'http://restapi.amap.com/v3/distance' # 一个新的API
params = {'key': '填写自己申请的密钥',
'origins': '127.499023,50.249585', # 黑河市坐标
'destination': '98.497292,25.01757', # 腾冲市坐标
'type': 1 }
res = requests.get(url, params)
jd = json.loads(res.text)
distance = jd['results'][0]['distance']
distance
得到黑河到腾冲驾驶距离如下:
再把爬虫结果和高德地图对比:
请看方案一,over.
知乎第一次发文。