爬取全国地铁站点、地铁线路和发车时刻的方法。
一、两种爬取方法概述
 (一)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解析html
    tbody = 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. 利用Python爬取全国250m精度的人口数据(GeoQ)、房价数据和公交站(线路)等数据

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 中原百科 GIS大师兄 PS:如有需要Python学习资料的小伙伴可 ...

  2. 利用python爬取城市公交站点

    利用python爬取城市公交站点 页面分析 https://guiyang.8684.cn/line1 爬虫 我们利用requests请求,利用BeautifulSoup来解析,获取我们的站点数据.得 ...

  3. 利用Python爬取全国250m精度的人口数据

    此次以GeoQ(智图)为基础,利用Python爬取全国250m精度的人口数据(GeoQ)这个网站开放过250m精度的人口分布数据,而且人口分布有年龄分段等属性.先得注册登录到达创建地图的界面. 看人口 ...

  4. 利用Python爬取全国250m精度的人口数据、房价数据等数据 | CSDN博文精选

    作者 | 中原百科来源 | CSDN博客 (一) 我的第一篇博客写的就是爬取人口数据基于腾讯位置大数据平台的全球移动定位数据获取(Python爬取),精度是1000m,后来有朋友和我说有个网站开放过2 ...

  5. 用python爬取全国和全球疫情数据,并进行可视化分析(过程详细代码可运行)

    用Python爬取最新疫情数据 这次重大疫情,每时每刻数据都有可能变化,这篇博文将为大家讲解如何爬取实时疫情数据,并且分析数据,作出数据可视化的效果. 报告梗概: 对中国疫情分析 1.1 展示各省疫情 ...

  6. python爬取全国五级行政区

    以前爬过国家统计局的四级行政区(http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2017/),但是对于五级数据效果不是很好. 偶然间发现这个网站:ht ...

  7. 你在的城市撒币了吗?Python爬取全国各城市消费券发放数据并分析

    前言 近期,全国多地以各种形式投放消费券.消费补贴来鼓励消费,部分城市在首期消费券的基础上,连续追加发放多期消费券.你在的城市撒币了吗?哪个省份最爱撒币?哪个城市撒币最多?跟随本文一起来看看. 数据说 ...

  8. 用python爬取考研信息网_【高考、考研党的福利】使用Python爬取全国高校及GIS/RS专业信息【附代码和Excel】...

    题外话:前一段时间翻译了一部关于GIS的纪录片,然后发了一篇文章,没想到有这么多人感兴趣,为了让广大GISER知道有这部神片,遂想投稿至GIS相关的专栏,不曾想居然还没人开设,真是"绕树三匝 ...

  9. python爬取全国天气数据

    可以实现爬取全国的天气数据,存储为csv文件 数据来源为http://m.tianqi.com 需要requests, bs4, pandas, lxml库 对应的安装命令 pip install r ...

最新文章

  1. 中国在5G、AI等领域对美国紧追不舍,但设备工艺依旧落后
  2. Dapper 多数据库优化
  3. linux swftools java_linux安装openoffice与SWFtools工具
  4. oracle9i 大字段CLOB 长度无效 异常ORA-01483: DATE 或 NUMBER 赋
  5. sql中的where 1=1有什么用?
  6. Entity Framework 实体关系总结(转)
  7. C语言文件与数组之间输入输出操作
  8. Linux之防火墙开通端口
  9. 语音识别是如何识别出各地方言的?
  10. Python学习(二十) —— 前端之CSS
  11. python多版本共存失败记录
  12. 20172303 2017-2018-2《程序设计与数据结构》课程总结
  13. ad敷铜后还有部分飞线_眼花缭乱!超级无敌的飞线大法,打造一把超低功耗无线机械键盘...
  14. 实践项目2 图书管理系统
  15. 图书馆管理系统——借书操作
  16. 查询的端口 -解决端口被占用的问题
  17. mysql数据一条复制_Mysql 复制一条数据
  18. 使用n2disk和PF_RING构建一个(便宜的)2×10 Gbit(连续)数据包记录器
  19. photoshop抠图
  20. Python高级-前端-01-HTML和CSS

热门文章

  1. android 跑马灯效果
  2. 三维交通模拟html,基于WebGL的三维交通监控可视化技术应用(实践版) ThingJS
  3. 爬虫实战(证券交易)
  4. 清洁环保的小型风电滑环基本介绍
  5. Docker在英雄联盟游戏中的实践探索(四)
  6. html a标签下载
  7. do vis是什么意思_如何用英语谈论休闲娱乐活动,这些活动对我们有什么好处呢?|娱乐|英语|音乐|翻译|旅游...
  8. 如何在 Windows 2000、XP 的桌面上增加公文包
  9. Python学习-----随机数篇
  10. 算法题-跳格子有多少种走法