当前位置: 首页 > news >正文

利用Python爬取高德地图全国地铁站点信息

利用Python中的requests库进行地铁站点信息的获取,同时将数据保存在本机excel中

# 首先引入所需要的包
import requests
from bs4 import BeautifulSoup
import pandas as pd
import json# 发送 GET 请求获取网页内容
url = 'http://map.amap.com/subway/index.html'
response = requests.get(url)
# 第一步:爬取两个 div 中的城市数据(包括 ID 和拼音),生成城市集合
if response.status_code == 200:# 解码response_content = response.content.decode('utf-8')# 使用 Beautiful Soup 解析网页内容soup = BeautifulSoup(response_content, 'html.parser')# 从这里开始,你可以使用 Beautiful Soup 对象(soup)来提取所需的信息# 例如,查找标题title = soup.title# 通过Beautiful Soup来找到城市信息元素,并提取这个元素的信息for soup_a in soup.find('div', class_='city-list fl').find_all('a'):city_name_py = soup_a['cityname']city_id = soup_a['id']city_name_ch = soup_a.get_text()city_info_list.append({'name_py': city_name_py, 'id': city_id, 'name_ch': city_name_ch})# 获取未显示出来的城市列表for soup_a in soup.find('div', class_='more-city-list').find_all('a'):city_name_py = soup_a['cityname']city_id = soup_a['id']city_name_ch = soup_a.get_text()city_info_list.append({'name_py': city_name_py, 'id': city_id, 'name_ch': city_name_ch})print(city_info_list)
else:print("无法获取网页内容")for city_info in city_info_list:city_id = city_info.get("id")city_name = city_info.get("name_py")city_name_ch = city_info.get("name_ch")print("开始爬取城市" + city_name_ch + "的数据")city_lines_list = []# 第二步:遍历城市集合,构造每一个城市的 url,并下载数据# 构造每个城市的urlurl = "http://map.amap.com/service/subway?_1717380520536&srhdata=" + city_id + '_drw_' + city_name + '.json'res = requests.get(url)content = res.content.decode('utf-8')# 将内容字符串转换成json对象content_json = json.loads(content)# 提取该城市的所有地铁线listline_info_list = content_json.get("l")# 第三步:开始处理每一个地铁线,提取内容到dataframe中for line_info in line_info_list:# 地铁线名字line_name = line_info["kn"]# 处理地铁线站点df_per_zd = pd.DataFrame(line_info["st"])df_per_zd = df_per_zd[['n', 'sl', 'poiid', 'sp', 't', 'su', 'sid']]df_per_zd['gd经度'] = df_per_zd['sl'].apply(lambda x: x.split(',')[0])df_per_zd['gd纬度'] = df_per_zd['sl'].apply(lambda x: x.split(',')[1])df_per_zd.drop('sl', axis=1, inplace=True)df_per_zd['路线名称'] = line_info['ln']df_per_zd['城市名称'] = city_name_chdf_per_zd.rename(columns={"n": "站点名称", "poiid": "POI编号", "sp": "拼音名称", "t": "换乘标志 1:换乘,0:不可换乘", "su": "su", "sid": "sid编号"}, inplace=True)# 先将这条地铁线处理过的dataframe存起来,我们后面给他放到一张表里city_lines_list.append(df_per_zd)# 这段代码就是将地铁线数据列表聚合到一张表里,形成每个城市的地铁站数据city_subway_data = pd.concat(city_lines_list, ignore_index=True)# 第四步:将处理好的文件保存为xlsxcity_subway_data.to_excel(city_name_ch + '.xlsx', sheet_name='Sheet1')

相关文章:

  • Vue 中组件通讯的方式
  • Vue3.2 + vue/cli-service 打包 chunk-vendors.js 文件过大导致页面加载缓慢解决方案
  • 一周学会Django5 Python Web开发-Django5详细视图DetailView
  • 飞桨(PaddlePaddle)数据预处理教程
  • 全量知识系统问题及SmartChat给出的答复 之9 三套工具之4语法解析器 之2
  • Android 14后台服务永久保活的技术方法
  • selenium爬取空气质量数据
  • 鸿蒙NEXT开发实战:【视频文件裁剪】
  • ccf 相邻数对解题思路
  • 线性dp P4310-绝世好题/P4933 大师【日记】
  • 机顶盒显示驱动芯片:SM74HC595D的功能与应用
  • unity-unity2d基础操作笔记(三)0.5.000
  • 随想录算法训练营第五十一天|309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费
  • 05_Mongooes
  • 「一本通 6.4 例 3」Sumdiv
  • 时间复杂度分析经典问题——最大子序列和
  • EOS是什么
  • java第三方包学习之lombok
  • Java基本数据类型之Number
  • Laravel Telescope:优雅的应用调试工具
  • node.js
  • php中curl和soap方式请求服务超时问题
  • Solarized Scheme
  • Spring声明式事务管理之一:五大属性分析
  • 从零开始的无人驾驶 1
  • 记一次和乔布斯合作最难忘的经历
  • 前端知识点整理(待续)
  • 区块链分支循环
  • 时间复杂度与空间复杂度分析
  • 使用docker-compose进行多节点部署
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 通过调用文摘列表API获取文摘
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • #### go map 底层结构 ####
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (C#)获取字符编码的类
  • (LeetCode 49)Anagrams
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (SpringBoot)第七章:SpringBoot日志文件
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (转)关于多人操作数据的处理策略
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • .Family_物联网
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • @Pointcut 使用
  • [C++]Leetcode17电话号码的字母组合
  • [C++从入门到精通] 14.虚函数、纯虚函数和虚析构(virtual)
  • [EFI]Dell Inspiron 15 5567 电脑 Hackintosh 黑苹果efi引导文件
  • [hdu 4552] 怪盗基德的挑战书
  • [IE9] IE9 Beta崩溃问题解决方案
  • [IE9] IE9 RC版下载链接