现实工作中可能会碰到分析城市交通等方面的需求,这就不仅仅需要获取公交线路和站点的字段属性,更重要的是获取经纬度,便于arcgis上图。所以今天这篇文章就来讲讲怎么获取一个城市的所有的公交线路、公交站点、经纬度信息以及如何生成arcgis中的shp文件。首先明确以下几个问题:
- 选取公交信息网站——8684网站
- 获取经纬度——通过调用高德地图API
- 坐标转换——高德坐标系(又称火星坐标系) to WGS84/国家大地2000
一、解析8684网站网页信息
可以查询公交信息的网站其实也挺多的,像8684、公交查询网、坐车网等等,这里我就用8684了(看起来顺眼一点hhhhhh)。打开8684网站,定义城市(这里默认武汉市),选择【公交】→【线路查询】→【线路分类】,可以看到武汉市有很多类型的线路,先选择一个汉阳线路,可以看到下面有很多路线的公交。
老规矩,打开开发人员工具,发现所有的公交线路都存在<div class="list clearfix">里,一个站点名称在一个<a>标签下。那接下的事情就好办了。
#导入需要的库,模块报错在setting里install一般能解决
import requests
import json
from bs4 import BeautifulSoup
url = "https://wuhan.8684.cn/line3" # 今天就只先演示获取一种线路类型下所有公交的信息,要想拿到整个城市的,其实就加个for循环:line1,line2,line3......
# 伪装请求头
headers = {
"user-agent": "Mozilla/5.0 (Windows