阅读本文大概须要 3 分钟html
最近两天工做之余,开始涉猎python,自动爬取了全国30+城市地铁图数据,这里分享下整个爬虫过程python
首先分析全国各个城市地铁图的数据来源,无非就是百度或者高德,此次选择用高德做为数据来源。打开高德地铁图PC端官网 http://map.amap.com/subway/index.html?&1100,点击每一个城市能够看到当前城市的地铁图,打开浏览器F12一下,能够很容易看到Ajax请求接口后,地铁图才绘制出来的。git
分析得知,xhr请求的接口数据即是咱们须要的一部分数据(包含线路名称、线路名称坐标、线路轨迹、站点名称、站点定位坐标等),另外一部分数据则是直接在Dom节点中(包含站点名称坐标),因此咱们要爬取的数据即是Ajax接口数据 + Dom节点数据,如图所示:github
了解清楚数据来源后,就开始进行python准备工做,记住万能公式 : 程序 = 『数据结构』 +『 算法』算法
你要作的准备工做即是本次学习后收获的知识点:chrome
接口请求:采用requests库;json
dom解析:采用lxml库;浏览器
浏览器自动化操做:采用selenium以及chrome浏览器驱动;数据结构
json操做:采用json库dom
list: 存储线路列表
dict:存储线路和站点信息
string: 存储各字段信息
这里再也不讲述各个依赖库的安装,有针对性学习python相关知识点,就能够愉快地编码了,运行写好的爬虫脚本,不用任何手动操做,就可获得30+城市的json格式地铁图数据文件了
https://github.com/caijinlin/python-spider (内附抓取视频)
编码的过程当中,遇到这样一个问题,有些城市的菜单在页面的『更多』里面,加载完页面后是隐藏的,python打开浏览器模拟点击的时候,会报一个找不到该元素的错误,通过google一番,总结了两个解决方案,亲测可用
https://github.com/caijinlin/dev-solutions/issues/14
学习不该该停留理论,动手实践并输出,方可检验你的学习成果,一块儿操练起来吧