前言:vscode作为一款轻量级的编辑器,界面整洁,操作方便,虽然比不上pycharm的功能齐全,但对新手来说已经足够了。具体的python开发环境配置可以参考以下链接。VSCode配置Python开发环境

目录

一. 爬取思路

二. 页面分析

三. 代码实现

四. 成果展示

Reference:


一. 爬取思路

1.首先从高德地图找到地铁线路以及站点页面。http://map.amap.com/subway/index.html

图一

2.在此页面按F12,点击Network,得到图二所示的地址。右键该地址选择Open in new tab转到图三,可以看到我们需要的站点以及路线信息就在此位置下。我们要做的就是构造这个url。

图二

图三

二. 页面分析

1. 打开多个城市的页面尝试以上步骤可以看出我们需要访问的所以url中只有城市编码和城市的名称不同。那么这个一一对应的城市编码我们应该去哪里找呢?这时候就需要一点点的html知识,在层层嵌套的页面中找到所需要的信息。

图四

最终我们在图四所示的div中找到了所需要的信息,接下来就可以开始写代码了。

三. 代码实现

1.引入需要的包,构建请求头

import requests
import json
import csv
from lxml import etreePAGE_URL = 'http://map.amap.com/subway/index.html?&1100'
DATA_URL = 'http://map.amap.com/service/subway?srhdata='
HEADER = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"}

2.主要代码

def fetchAllCity(url, header):r = requests.get(url, header)html = r.contentelement = etree.HTML(html)#使用xpath函数结合xpath表达式进行标签定位和指定数据提取options = element.xpath("//a[contains(@class, 'city')]")#存入citiescities = []for option in options:city = {'id': option.get('id'),'name': option.get('cityname'),'text': option.text}cities.append(city)return citiesdef parseCityData(citys):lw = open('./ditie_line.txt', 'a')lw.write('\n')pw = open('./ditie_point.txt', 'a')pw.write('\n')for city in citys:parseCityPointFromApi(city, lw, pw)def parseCityPointFromApi(city, lw,pw):#构建url并输出检查url = DATA_URL + "{}_drw_{}.json".format(city['id'], city['name'])print(url)#发出请求并解析jsonjson_str = requests.get(url).textlines_list = json.loads(json_str).get('l')# 地铁线路信息表lw = open("ditie_line.txt",'a',encoding="utf-8")pw = open("ditie_point.txt",'a',encoding="utf-8")lineInfo_list = []for line in lines_list:#每条线的信息集合,可根据个人需要在这一步选择需要的字段lineInfo = {}lineInfo['ln'] = line.get('ln')lineInfo['cl'] = line.get('cl')print(lineInfo['ln'],lineInfo['cl'],city['name'],city['text'],file=lw)#线路站点列表station_list = []st_list = line.get('st')for st in st_list:station_dict = {}station_dict['name'] = st.get('n')coord = st.get('sl')station_dict['lat'] = coord.split(',')[0]station_dict['lon'] = coord.split(',')[-1]print(station_dict['name'],station_dict['lat'],station_dict['lon'],city['name'],city['text'],lineInfo['ln'],file=pw)station_list.append(station_dict)def csvMaker():#txt储存为csvwith open('./ditie_point.csv','w',newline='') as f:f_csv=csv.writer(f)for line in open('E:\python\spider\ditie_point.txt', 'r',encoding='utf-8'):new_line = line.strip().split()f_csv.writerow(new_line)with open('./ditie_line.csv','w',newline='') as f:f_csv=csv.writer(f)for line in open('E:\python\spider\ditie_line.txt', 'r',encoding='utf-8'):new_line = line.strip().split()f_csv.writerow(new_line)def main():cities = fetchAllCity(PAGE_URL, HEADER)print(cities)parseCityData(cities)if __name__ == '__main__':main()csvMaker()

四. 成果展示

这里我选择了csv格式的结果,有需要的话可以通过arcpy直接转为空间数据。

图五 成果展示

图六 地铁站点信息

图七 地铁路线信息

Reference:

Python爬虫练习:爬取高德地图地铁线路及站点数据

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

python将txt文件转为csv文件

零基础使用vscode实现python爬取高德地铁数据相关推荐

  1. 使用python爬取高德POI数据,并转换为WGS84经纬度坐标的点矢量

    一,爬取高德POI数据(高德开放平台接口+ Python) 参考记者博客https://blog.csdn.net/hxx099/article/details/88974264 1,申请高德开放平台 ...

  2. python爬高德地图_利用Python爬取高德地图数据

    准备1.高德开放平台注册账户 https://lbs.amap.com/dev/index 验证手机号码.邮箱后进入开发者后台创建一个应用: 并为该应用添加 Key,服务平台选择 web 服务 申请完 ...

  3. python爬取高德数据_利用Python爬取高德地图数据

    准备1.高德开放平台注册账户 https://lbs.amap.com/dev/index 验证手机号码.邮箱后进入开发者后台创建一个应用: 并为该应用添加 Key,服务平台选择 web 服务 申请完 ...

  4. python爬取高德poi数据_Python突破高德API限制完全爬取POI兴趣点数据

    一.背景 爬取POI数据,基本上是个老生常谈的话题了,现在市面上随处可见各路大神制作的获取POI数据的工具,但是当我将从高德地图中实际获取的POI数据与工具爬取的POI数据进行对比之后发现,市面上流行 ...

  5. python输入数据爬取_利用 Python 爬取高德地图数据

    准备1.高德开放平台注册账户 https://lbs.amap.com/dev/index 验证手机号码.邮箱后进入开发者后台创建一个应用: 并为该应用添加 Key,服务平台选择 web 服务 申请完 ...

  6. python爬取高德地图数据_你的未来有我导航----教你如何爬取高德地图

    简单一文教你如何爬取高德地图 目录 推荐 一. 分析网页结构 二.拿到相关网址 三.代码实现 3.1 查询所有城市名称和编号 3.2 根据编号查询天气 四.完整代码 五.保存结果 一. 分析网页结构 ...

  7. python 爬取拉钩数据

    Python通过Request库爬取拉钩数据 爬取方法 数据页面 建表存储职位信息 解析页面核心代码 完整代码 结果展示 爬取方法 采用python爬取拉钩数据,有很多方法可以爬取,我采用的是通过Re ...

  8. 利用Python爬取国家水稻数据中心的品种数据

    利用Python爬取国家水稻数据中心的品种数据 一.页面获取 python可以进行对网页的访问,主要用到requests,beautifulsoup4包. 首先新建一个page的py文件,用来获取页面 ...

  9. Python爬取高德地图各城市天气

    Python爬取高德地图各城市天气 爬虫练习项目之一.从高德地图json数据接口获取天气.可以获取某省的所有城市天气.高德地图的这个接口还能获取县城的天气,我只写到了市.有兴趣的朋友可以尝试一下. 完 ...

  10. Python应用实战-Python爬取4000+股票数据,并用plotly绘制了树状热力图(treemap)

    目录: 1. 准备工作 2. 开始绘图 2.1. 简单的例子 2.2. px.treemap常用参数介绍 2.3. color_continuous_scale参数介绍 2.4. 大A股市树状热力图来 ...

最新文章

  1. php变量类型怎么表示,PHP 数据类型_php
  2. 三大运营商抢夺物联网市场 中国联通物联网连接数突破5000万
  3. UI基本控键UIView ,UILabel,UITextField ,UIButton,UIAlertView
  4. C语言头文件一般以什么名称结尾,c语言书写规范.doc
  5. java零碎要点009---java实现服务器心跳机制,TCP握手
  6. 【java】打印一个序列,第一项和第二项都是1,以后的每一项都是前面两项的和。
  7. python是什么专业学的-自动化专业学习python需要到什么程度?
  8. 在 Azure Web 应用中创建 PHP 应用程序
  9. Ajax批量上传文件Demo
  10. 08.存储Cinder→5.场景学习→02.Create Volume→1.cinder-api处理过程
  11. SRC漏洞挖掘--CNVD国家信息安全漏洞共享平台
  12. 中秋佳节│以码为笔,绘合家团圆
  13. 互联网赚钱:普通人月入上万的秘密,连载1
  14. qt android图片自适应大小,Qt on Android:怎样适应不同的屏幕尺寸
  15. ElementUI中的 Cascader 级联选择器 卡顿问题
  16. MYSQL命令集大全
  17. 服务器定时执行js脚本
  18. 三维目标检测--VoteNet增强版--MLCVNet论文解读
  19. python之获取本机ip
  20. 基于python爬虫基础教学(豆瓣,猫眼,3DM)

热门文章

  1. unbuntu 安装node
  2. 纯策略纳什均衡与混合策略纳什均衡的比较
  3. java 读取word模板文件路径_Java 读取Word模板替换内容并另存
  4. 计算机蓝牙传输,怎么使用电脑蓝牙 电脑蓝牙传输文件步骤【步骤教程】
  5. 关于滚动贯穿的解决方案
  6. 程序化交易学习笔记(六、模式、日内交易模型、Tick模型)
  7. 电脑ie怎么设置html5,电脑中IE浏览器工具栏设置选项显示的是英文如何改成中文...
  8. Unity问题(1)——mesh法线反转
  9. JAVA--多线程管理
  10. 互联网上好的博客博主