transbigdata包可以用来获取公共交通站点数据,只用一行代码就可以实现,非常方便。
import transbigdata as tbd
import requests
以百度为例,首先申请获取百度开放平台ak,此处采用圆形区域检索,检索半径设为5000米。
# 服务地址(此处以百度为例)
host = "https://api.map.baidu.com"
# 接口地址
uri = "/place/v2/search"
# 此处填写你在控制台-应用管理-创建应用后获取的AK
ak = "申请获取的ak"
params = {
"query": "公交站点",
"location": "39.799257,116.516305",
"radius": "5000",
"output": "json",
"ak": ak,
}
response = requests.get(url = host + uri, params = params)
if response:
print(response.json())
返回结果中存在重复线路,将列表转化为字典可以直接进行相同内容去重
x = []
for table in response.json()['results']:
keyword = table['address'].split(";")
x = x + keyword
# print(keyword)
print(x)
y = list(dict.fromkeys(x))
print(y)
将去重后线路输入transbigdata
data, stop=tbd.getbusdata('北京市',y,accurate=True,timeout=20)
返回结果如图
将爬取的站点保存为json格式以便转换为矢量数据