json里面的list数据取不出来_如何用Python自动爬取全国30+城市地铁图数据?

最近两天工作之余,开始涉猎python,自动爬取了全国30+城市地铁图数据,这里分享下整个爬虫过程

358304c5de482874ae2eaad88074add5.png

1. 数据来源


首先分析全国各个城市地铁图的数据来源,无非就是百度或者高德,这次选择用高德作为数据来源。打开高德地铁图PC端官网 http://map.amap.com/subway/index.html?&1100,点击每个城市可以看到当前城市的地铁图,打开浏览器F12一下,可以很容易看到Ajax请求接口后,地铁图才绘制出来的。

分析得知,xhr请求的接口数据便是我们需要的一部分数据(包含线路名称、线路名称坐标、线路轨迹、站点名称、站点定位坐标等),另一部分数据则是直接在Dom节点中(包含站点名称坐标),所以我们要爬取的数据便是Ajax接口数据 + Dom节点数据,如图所示:

73f9af3c68a75112fbb44304cc0d114d.png

a865079bf8d21e5fc500c0e2cd3e5df2.png

2. 爬虫过程

了解清楚数据来源后,就开始进行python准备工作,记住万能公式 : 程序 = 『数据结构』 +『 算法』

你要做的准备工作便是本次学习后收获的知识点:

2.1 用到哪些python库:

接口请求:采用requests库;

dom解析:采用lxml库;

浏览器自动化操作:采用selenium以及chrome浏览器驱动;

json操作:采用json库

2.2 用到哪些python数据结构:

list: 存储线路列表

dict:存储线路和站点信息

string: 存储各字段信息

这里不再讲述各个依赖库的安装,有针对性学习python相关知识点,就可以愉快地编码了,运行写好的爬虫脚本,不用任何手动操作,就可得到30+城市的json格式地铁图数据文件了

970cd04cc86c4cd1a216a5b06a7dda51.png

3. 源码

https://github.com/caijinlin/python-spider (内附抓取视频)

4. 总结

编码的过程中,遇到这样一个问题,有些城市的菜单在页面的『更多』里面,加载完页面后是隐藏的,python打开浏览器模拟点击的时候,会报一个找不到该元素的错误,经过google一番,总结了两个解决方案,亲测可用

https://github.com/caijinlin/dev-solutions/issues/14



学习不应该停留理论,动手实践并输出,方可检验你的学习成果,一起操练起来吧

9c973a0d06ef15639e619833631ed130.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值