零基础使用vscode实现python爬取高德地铁数据
前言: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爬取高德地铁数据相关推荐
- 使用python爬取高德POI数据,并转换为WGS84经纬度坐标的点矢量
一,爬取高德POI数据(高德开放平台接口+ Python) 参考记者博客https://blog.csdn.net/hxx099/article/details/88974264 1,申请高德开放平台 ...
- python爬高德地图_利用Python爬取高德地图数据
准备1.高德开放平台注册账户 https://lbs.amap.com/dev/index 验证手机号码.邮箱后进入开发者后台创建一个应用: 并为该应用添加 Key,服务平台选择 web 服务 申请完 ...
- python爬取高德数据_利用Python爬取高德地图数据
准备1.高德开放平台注册账户 https://lbs.amap.com/dev/index 验证手机号码.邮箱后进入开发者后台创建一个应用: 并为该应用添加 Key,服务平台选择 web 服务 申请完 ...
- python爬取高德poi数据_Python突破高德API限制完全爬取POI兴趣点数据
一.背景 爬取POI数据,基本上是个老生常谈的话题了,现在市面上随处可见各路大神制作的获取POI数据的工具,但是当我将从高德地图中实际获取的POI数据与工具爬取的POI数据进行对比之后发现,市面上流行 ...
- python输入数据爬取_利用 Python 爬取高德地图数据
准备1.高德开放平台注册账户 https://lbs.amap.com/dev/index 验证手机号码.邮箱后进入开发者后台创建一个应用: 并为该应用添加 Key,服务平台选择 web 服务 申请完 ...
- python爬取高德地图数据_你的未来有我导航----教你如何爬取高德地图
简单一文教你如何爬取高德地图 目录 推荐 一. 分析网页结构 二.拿到相关网址 三.代码实现 3.1 查询所有城市名称和编号 3.2 根据编号查询天气 四.完整代码 五.保存结果 一. 分析网页结构 ...
- python 爬取拉钩数据
Python通过Request库爬取拉钩数据 爬取方法 数据页面 建表存储职位信息 解析页面核心代码 完整代码 结果展示 爬取方法 采用python爬取拉钩数据,有很多方法可以爬取,我采用的是通过Re ...
- 利用Python爬取国家水稻数据中心的品种数据
利用Python爬取国家水稻数据中心的品种数据 一.页面获取 python可以进行对网页的访问,主要用到requests,beautifulsoup4包. 首先新建一个page的py文件,用来获取页面 ...
- Python爬取高德地图各城市天气
Python爬取高德地图各城市天气 爬虫练习项目之一.从高德地图json数据接口获取天气.可以获取某省的所有城市天气.高德地图的这个接口还能获取县城的天气,我只写到了市.有兴趣的朋友可以尝试一下. 完 ...
- Python应用实战-Python爬取4000+股票数据,并用plotly绘制了树状热力图(treemap)
目录: 1. 准备工作 2. 开始绘图 2.1. 简单的例子 2.2. px.treemap常用参数介绍 2.3. color_continuous_scale参数介绍 2.4. 大A股市树状热力图来 ...
最新文章
- php变量类型怎么表示,PHP 数据类型_php
- 三大运营商抢夺物联网市场 中国联通物联网连接数突破5000万
- UI基本控键UIView ,UILabel,UITextField ,UIButton,UIAlertView
- C语言头文件一般以什么名称结尾,c语言书写规范.doc
- java零碎要点009---java实现服务器心跳机制,TCP握手
- 【java】打印一个序列,第一项和第二项都是1,以后的每一项都是前面两项的和。
- python是什么专业学的-自动化专业学习python需要到什么程度?
- 在 Azure Web 应用中创建 PHP 应用程序
- Ajax批量上传文件Demo
- 08.存储Cinder→5.场景学习→02.Create Volume→1.cinder-api处理过程
- SRC漏洞挖掘--CNVD国家信息安全漏洞共享平台
- 中秋佳节│以码为笔,绘合家团圆
- 互联网赚钱:普通人月入上万的秘密,连载1
- qt android图片自适应大小,Qt on Android:怎样适应不同的屏幕尺寸
- ElementUI中的 Cascader 级联选择器 卡顿问题
- MYSQL命令集大全
- 服务器定时执行js脚本
- 三维目标检测--VoteNet增强版--MLCVNet论文解读
- python之获取本机ip
- 基于python爬虫基础教学(豆瓣,猫眼,3DM)