介绍爬取全国地铁站点、地铁线路和发车时刻的方法。

一、两种爬取方法概述

(一)html页面爬取

1、 为了收集全国地铁线路的发车时刻信息,刚开始尝试的方法如下:

(1)找到每个城市的地铁官网,如“广州地铁官方网站”

(2)在官网找到首尾班车时刻表,广州的发车时刻数据在http://cs.gzmtr.com/ckfw/fwsj/

(3)使用python爬取网页的表格数据

2、实现细节

主要介绍使用python如何爬取html页面。爬虫用到了webdriver 和BeautifulSoup,以及lxml解析。

(1) 爬取页面

# 获取页面源码
def get_html(url):browser = webdriver.PhantomJS(executable_path=r"E:/spider/phantomjs-2.1.1-windows/bin/phantomjs.exe")     #使用无界面的phantomjs浏览器,封装浏览器信息browser.get(url)                 #发送请求,加载网页print("### Handling <" + url + ">")return browser.page_source  #返回网页文本

(2) 读取数据,用lxml解析

    html = get_html(url)     #获取html页面bsobj = BeautifulSoup(html, "lxml")       #用lxml解析htmltbody = bsobj.find("div", {"id":"zoneService"}).find("tbody")    #查找到显示线路信息的表格

(3) 读取表格的各个字段,存入csv文件

(二)高德地图API数据解析

1、html页面爬取方法的工作量很大,需要单独处理每个城市的数据,并且官网提供的数据格式不一,给数据收集带来了很大的困难。使用百度地图搜索从A到B的路线,能看到清晰的地铁换乘方案、路线经过的站点以及首晚班车时刻。我猜想百度一定搜集好了我需要的这些数据,就开始寻找百度是否提供了这样的API接口。在百度搜索之后,我找到了这篇文章:全国地铁线路信息API(含站点早晚班车时间,坐标等),从中选择了“高德地图API”作为接口。

1. 处理思路如下:

(1)修改该接口的城市id,1100和城市名字beijing, 得到30个提供站点名字的服务接口。

http://map.amap.com/service/subway_1469083453978&srhdata=1100_drw_beijing.json

(2)修改该接口的城市id,1100和城市名字beijing, 得到提供站点发车时刻的服务接口。

http://map.amap.com/service/subway?_1469083453980&srhdata=1100_info_beijing.json

(3)关联站点名字和站点发车时刻,得到完整的线路+站点名+首晚发车时刻 的数据

2、实现细节

介绍如何解析高德API接口的数据+如何实现两个表的连接。

(1)urllib 是一个工具包,包含用于处理 Url 的几个模块。urllib.request 用于打开和读写url.

    html = urllib.request.urlopen(url)hjson = json.loads(html.read().decode("utf-8"))

(2) API返回的json格式说明

根据返回的json数据,把地铁线名称、地铁线id、站点名称、站点id以及其他信息存入stations.csv文件,把地铁线id、站点id、收尾班车时刻存入time.csv文件。

(3) 表关联。读取stations.csv,把stationId作为key,stationName作为value存入map,接着读取time.csv,根据map.get(key)方法,得到id对应的名字。然后把line, stationId, stationName, firstTime, endTime, firstTime2, endTime2字段写入新的csv文件。最后的结果如下:

全国地铁数据爬取-python相关推荐

  1. UN Comtrade(联合国商品贸易统计数据库)数据爬取Python代码

    目录 Python代码 根据需求改写url 报错应对办法 UN Comtrade数据库关于中国台湾的数据 2021/9/28更新:最近有用户反馈下载会出现错误内容如下图,感谢用户@三眼皮138帮忙找出 ...

  2. UN Comtrade(联合国商品贸易统计数据库)数据爬取Python代码——使用动态IP

    目录 Virtual Private Network 代理服务器 测试代理IP是否生效 上一篇博文UN Comtrade(联合国商品贸易统计数据库)数据爬取Python代码讲了如何使用Python爬取 ...

  3. Python爬虫|高德地图地铁数据爬取与制图

    目录 一.高德地图数据爬取 1.爬取思路 2.python核心代码 二.Arcmap制图 一.高德地图数据爬取 1.爬取思路 首先,谷歌浏览器打开高德地图官网,点击上方菜单栏地铁进入地铁线路网站如下, ...

  4. 起点中文网月票等字体数据爬取Python

    起点中文网收藏量等数据爬取 1.难点分析 通过chrome开发工具分析我么可以得出结论,月票数量不是html文本,而是通过字体生成出来的数字,这时候的爬虫就要复杂一些了. 2.思路分析 先爬取目标网页 ...

  5. Scrapy爬取1——接口数据爬取准备

    本文爬取网页:https://spa1.scrape.center/ 爬取流程: 1.检查页面: 检查网页源代码,查看数据是在网页HTML源代码中还是调用了接口 右键检查页面源代码,未在页面中发现任何 ...

  6. 轻松实现全国高校地理位置数据爬取(文末附源码和数据集)

    大家好,我是小一 一个城市的历史底蕴,不光可以从经济.文化和人文景点,还可以从高校的数量可以看出来.所以,今天就来试试如何爬取全国高校的分布数据. 以下文章比较适合初学者,老读者请酌情加速阅读. 今天 ...

  7. 每日一练:Python国内疫情数据爬取与地图绘制

    Python 国内疫情数据爬取与地图绘制 效果图 累计确诊疫情地图绘制 ① 时时数据抓取 ② 获取省份疫情数据 ③ 视觉配置项分段颜色数据设置 ④ 累计确诊疫情地图绘制 现存确诊疫情地图绘制 ① 获取 ...

  8. [Pyhon疫情大数据分析] 一.腾讯实时数据爬取、Matplotlib和Seaborn可视化分析全国各地区、某省各城市、新增趋势

    思来想去,虽然很忙,但还是挤时间针对这次肺炎疫情写个Python大数据分析系列博客,包括网络爬虫.可视化分析.GIS地图显示.情感分析.舆情分析.主题挖掘.威胁情报溯源.知识图谱.预测预警及AI和NL ...

  9. Python 大数据分析疫情:如何实现实时数据爬取及 Matplotlib 可视化?

    作者 | 杨秀璋 来源 | CSDN博客专家Eastmount 责编 | 夕颜 思来想去,虽然很忙,但还是挤时间针对这次肺炎疫情写个Python大数据分析系列博客,包括网络爬虫.可视化分析.GIS地图 ...

最新文章

  1. oracle 越南字符,ORACLE 12.2RAC之问题 ora.chad OFFLINE
  2. markdown转word
  3. ubuntu16.04 intel_rapl : no valid rapl domains found in packge0
  4. 中国SaaS死或生之七:死生非大事,利益最相关
  5. [Medical Image Process] 3.2 GrayScale Morphology(灰阶图像形态学及基本运算)
  6. Github Pages + Jekyll 独立博客一小时快速搭建上线指南
  7. Abaqus: 云图设置
  8. OpenGL ES 2.0 for Android教程(三):编译着色器并绘制到屏幕
  9. 首份财报营收增长扭亏为盈,为何怪兽充电的出路依旧“迷雾重重”
  10. 计算机空格键作用,电脑空格键有哪些作用?你知道几个?
  11. elementui 点击按钮(文字) 预览图片
  12. Thinkphp3.2 PHPMailer 发送 QQ邮箱 163邮箱
  13. php 二维数组为空,php 判断数组是否为空的几种方法
  14. 1602液晶显示摄氏度
  15. 大幅提升冲浪效率,搜狗高速浏览器3.0
  16. c#中const与readonly区别
  17. C++:to_string与stoi函数
  18. linux audio device driver 音频设备驱动讲解
  19. 程序设计与算法三~C++面向对象程序设计~北大郭炜MOOC学习笔记chapter1第一章(新标准C++程序设计)
  20. vue实现歌词随音乐同步滚动

热门文章

  1. 子苗教育:抖音游戏推广怎么没有链接?
  2. 中国软件外包企业的出路
  3. 【成为架构师课程系列】消息队列:秒杀时如何处理每秒上万次的下单请求?
  4. PTA评测系统的常见问题
  5. 数据传送类指令(PUSH,POP,LEA)
  6. swiper横向轮播——阶梯式滚动轮播
  7. 网页3D编辑器Stone案例:房地产数字沙盘
  8. ST-LINK使用注意
  9. Android鹰眼轨迹追踪
  10. 杭电oj刷题C语言答案+思路