前言

查询所在城市所有的公交线路,填入linename数组中(本文只以深圳市68线路为例演示

深圳公交线路查询:深圳公交查询_深圳公交车线路查询_深圳公交地图 - 深圳公交网 (其他城市把拼音处修改即可

城市线路汇总

以数字开头 + 以汉字/字母开头 = 线路分类,要获取城市所有线路,只需要选择爬取其中一个即可。文末附件可爬取某城市的所有线路

由于高德的数据是用的gcj02坐标系,文中的transfer.py文件是为了将点坐标的坐标系改为更通用的wgs84坐标系,没有这个需求也可以不转换。

代码

2020年7月更新:发现接口已经失效了,我就不修改了,给大家找了一个其他博主的[点击此处跳转],亲测可行

'''
date: 2019.4
detail : 获取某城市某路公交车的线路图
warning:接口已失效
'''# _*_ coding:utf-8 _*_
import requests
import json
import time
import sys
sys.path.append('D:/坐标系转换') #导入不在同一文件夹下的py文件
import transfer # 导入transfer.py文件def BusLines(buslist):busname = buslist['key_name'] #线路名buslinename = buslist['name'] #线路名+起终点print(buslinename)fromname = buslist['front_name'] #起点terminalname = buslist['terminal_name'] #终点x = buslist['xs'].split(',')y = buslist['ys'].split(',')busPoint = []for i in range(len(x)):lng,lat = transfer.gcj02_to_wgs84(float(x[i]),float(y[i])) # 转换为wgs84坐标系linetmp = str(round(lng,6)) + "," + str(round(lat,6))busPoint.append(linetmp)return busPointif __name__ == '__main__':linename=['68路']for i in range(len(linename)):city = "440300" #深圳zoom = "11"busNum = linename[i]url="https://www.amap.com/service/poiInfo?query_type=TQUERY&pagesize=20&pagenum=1&qii=true&cluster_state=5&need_utd=true&utd_sceneid=1000&div=PC1000&addr_poi_merge=true&is_classify=true&zoom="+ zoom +"&city="+city+"&geoobj=114.235102%7C22.569015%7C114.276323%7C22.603105&keywords="+busNumresponse = requests.get(url)data = json.loads(response.text)if data['data']['message']=="Successful." and data['data']['busline_list']:buslists = data['data']['busline_list']buslist = buslists[0]buslines = BusLines(buslist)files = open('./公交线路' + busNum + '.txt','w')for i in range(len(buslines)):files.writelines(buslines[i]+'\n')files.close()

结果

单条路线可视化

1.打开ArcGIS,选择菜单栏【文件】-【添加数据】-【添加XY数据】

2.工具箱【数据管理工具】-【要素】-【点集转线】

3.最终结果

4.在全国公交线路城市列表查询结果是否可靠

多条路线可视化

2020年7月更新:尝试了上面博主的代码结合自己抓取的公交线路,确实可行,抓取的数据如图

下载资源:北上广深公交路线文本数据(.csv)

之前只用了一条线做可视化,所以一下就通过ArcGIS做出图来。但想了半天这种格式的多条线数据得用什么可视化/GIS软件来做,结果发现高德就提供了这样的工具:高德开放平台 | Map Lab(唯一的缺点是单个文件不能超过5M,我抓取的深圳公交数据有10M左右,只能拆成几部分加载了,最多3个图层,那文件就不能超过15M了。

如果要用ArcGIS的话,参照这个方法[链接]。但数据处理有点麻烦,或者在爬取的时候就按geojson格式输出,这样很多平台都可以可视化 [ csv/excel 数据转为Geojson 格式数据  ]。

2020年8月更新:高德开放平台使用起来还是有点局限,比如北京公交路线数据大于15M,那用这个方法就不能全部展示。可以选择修改输出格式,按WKT格式进行组织,如多点构成的线数据 LINESTRING(0 0, 10 10, 20 25, 50 60),然后通过QGIS就能生成矢量数据(下图用于举例说明。

//for i in range(len(b)):
//    tmp=re.split("[,]",b[i])
//    if len(res)==0:
//        res=res+"["+tmp[0]+","+tmp[1]+"]"
//    else:
//        res=res+",["+tmp[0]+","+tmp[1]+"]"for i in range(len(b)):tmp=re.split("[,]",b[i])if len(res)==0:res=res+"linestring("+tmp[0]+" "+tmp[1]else:res=res+","+tmp[0]+" "+tmp[1]res = res + ")"

注:这里几何图形类型因为软件汉化错误的原因,把“线”翻译成“行”了

附件

2020年7月更新:该代码是从8684网站上抓取某城市所有公交线路。之后如果网站的结构变了,就需要修改代码了,但一般不会大改。抓取的是以数字开头 + 以汉字/字母开头的公交线路

'''
date: 2020.7
detail: 抓取某城市所以公交线路,如1路、10路...
'''
# -*- coding: utf-8 -*-
import requests ##导入requests
from bs4 import BeautifulSoup ##导入bs4中的BeautifulSoup
import osheaders =  {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0'}all_url = 'http://shenzhen.8684.cn'  ##开始的URL地址【填写】start_html = requests.get(all_url, headers=headers) Soup = BeautifulSoup(start_html.text, 'lxml')all_list = Soup.find_all('div',class_='list')
all_Num = all_list[0].find_all('a') # 数字开头
all_Word = all_list[1].find_all('a') # 字母/拼音开头Network_list = []# 数字开头公交
for a in all_Num:href = a['href'] #取出a标签的href 属性html = all_url + hrefsecond_html = requests.get(html,headers=headers)Soup2 = BeautifulSoup(second_html.text, 'lxml') all_cc = Soup2.find('div',class_='cc-content').find_all('div')[-1]all_xNum = all_cc.find_all('a')for a2 in all_xNum:title = a2.get_text() #取出a1标签的文本Network_list.append(title)# 字母开头公交
for b in all_Word:href = b['href'] #取出a标签的href 属性html = all_url + hrefsecond_html = requests.get(html,headers=headers)Soup3 = BeautifulSoup(second_html.text, 'lxml') all_cc2 = Soup3.find('div',class_='cc-content').find_all('div')[-1]all_xWord = all_cc2.find_all('a')for b2 in all_xWord:title = b2.get_text() #取出a1标签的文本Network_list.append(title)# 定义保存函数,将运算结果保存为txt文件
def text_save(content,filename,mode='a'):file = open(filename,mode,encoding='utf-8')for i in range(len(content)):file.write(str(content[i])+',')print("\r已输出{}公交车".format(content[i]),end='')file.close()# 输出处理后的数据
text_save(Network_list,'深圳公交线路.txt');  #【填写】

下载资源:北上广深公交线路文本数据(.txt)

Python:利用高德API获取公交路线并可视化相关推荐

  1. python从高德api获取公交线路规划信息

    从高德api获取公交线路规划信息类似于爬虫,由于本人不会爬虫,因此简单说说如何实现 直接上代码 import os import requests import math import json im ...

  2. python分析成都房租信息,以及利用高德API查找租房

    python分析成都租房信息,以及利用高德API查找租房 使用的技术 效果 爬虫 需要爬取的网页分析 爬虫源码 数据可视化 利用高德API查找租房 github地址 使用的技术 爬虫:Beautifu ...

  3. 【应用】Python利用高德地图经纬度数据绘制定位

    [应用]Python利用高德地图经纬度数据绘制定位 一. 背景 二. 获取API 1. 注册高德开放平台个人开发者 2. 获取key 三. 具体步骤 1. 库的导入 2. 根据地址获取经纬度 3. 绘 ...

  4. flutter利用高德如何获取地理位置信息bug处理

    flutter中对于利用高德如何获取地理位置信息, 1.在高德开发平台,注册成为开发者,并获取key 2.安装依赖 对于如何安装第三方插件 请点击此处pub.dev amap_location 3.修 ...

  5. python使用openweathermap API获取全世界主要城市天气信息

    python使用openweathermap API获取全世界主要城市天气信息 官方网址: http://www.openweathermap.org/api 注意:使用gmail注册成功,然后到gm ...

  6. python调用高德api路径规划_Python调用高德API实现批量地址转经纬度并写入表格的功能...

    本段代码是先将需要转换经纬度的地址爬取在 '地址.csv' 文件里,文件截图示例: 代码展示 # coding=utf-8 # SPL # 时间:2020/12/20 21:15 import csv ...

  7. Python3 利用Virustotal API 获取json格式的分析报告

    Python3 利用Virustotal API 获取json格式的分析报告 import requests import json import osAPI="" // your ...

  8. Python 使用 twitter API 获取twitter用户信息

    Python 使用 twitter API 获取twitter用户信息 1. 概述 twitter作为国外极其大众化的社交平台,具有大量的海外用户,平台流动数据量极大,是国外人群生活数据的重要来源之一 ...

  9. [python]利用随机api二次元图片

    [python]利用随机api二次元图片 文章目录 [python]利用随机api二次元图片 爬取准备 观察网址 补充: 请求头 程序编写 小福利 爬取准备 开发环境:chrome .vscode 所 ...

最新文章

  1. 使用git更新github上的开源项目
  2. 发光二极管pcb封装图画法_五个方面剖析SIP封装工艺,看懂SIP封装真正用途
  3. 我家车模初长成 - K车模养成要点
  4. python requests的安装与简单运用
  5. Hive2.1.0集成Tez
  6. 用matlab做一个有刻度的网格,已知45个点X Y Z的坐标值已知,如何用matlab画出网格图,另外每个小方格里带颜色 - 程序语言 - 小木虫 - 学术 科研 互动社区...
  7. jQuery如何选择表格每行中的第三列?
  8. tibco汉化包6.3.0_TIBCO BusinessWorks 6和Container Edition与BW5的比较
  9. uniapp动态修改样式_uniapp样式动态绑定
  10. 史上最全java架构师技能图谱(上)
  11. oracle半角全椒_Oracle全角和半角处理函数
  12. [渝粤教育] 广东-国家-开放大学 21秋期末考试管理学原理★10013k1
  13. 【LeetCode】【字符串】题号:*151. 翻转字符串里的单词
  14. Docker网络基础---Docker跨主机容器访问通信
  15. phonegap文件上传(java_php),Android应用开发之使用PhoneGap实现位置上报功能
  16. Qt将GeoJson文件转为mif文件的示例
  17. 计算机图形学 全局光照及方法,实时全局光照渲染研究
  18. C语言 求素数、排序算法
  19. c语言头结点存放元素,【笔记】带头节点的单链表的C语言实现
  20. 【修真院PM小课堂】流程图

热门文章

  1. 世界地图nameMap
  2. 2018省赛第九届蓝桥杯真题C语言B组第十题题解 乘积最大
  3. 计算墨水污染的格子【非常规墨水污染】
  4. 【金融财经】金融市场一周简报(2018-03-16)
  5. 录屏神器Bandicam 4.34.1503学习版
  6. 微软最走运、最倒霉的十个瞬间 1
  7. Sign function
  8. 【按键精灵学习记录】以DOTA2人机为例
  9. mysql 误清空表 恢复数据
  10. SSL/TLS协议详解(三)——证书颁发机构