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

news2024/11/25 20:39:54

利用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,并下载数据
    # 构造每个城市的url
    url = "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)
    # 提取该城市的所有地铁线list
    line_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_ch
        df_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)
    # 第四步:将处理好的文件保存为xlsx
    city_subway_data.to_excel(city_name_ch + '.xlsx', sheet_name='Sheet1')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1493236.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

K线实战分析系列之二十三:塔形顶部和塔形底部

K线实战分析系列之二十三:塔形顶部和塔形底部 一、塔形顶部和塔形底部二、塔形顶部和塔形底部总结 一、塔形顶部和塔形底部 塔形顶部:预示着阶段性顶部的形成 塔型底部:预示着阶段性底部的形成 二、塔形顶部和塔形底部总结 形态的两…

字节后端实习 一面凉经

心脏和字节永远都在跳动 深圳还有没有大厂招后端日常实习生啊,求捞~(boss小公司也不理我) 很纠结要不要干脆直接面暑期实习,又怕因为没有后端实习经历,面不到大厂实习。死锁了

2195. 深海机器人问题(网络流,费用流,上下界可行流,网格图模型)

活动 - AcWing 深海资源考察探险队的潜艇将到达深海的海底进行科学考察。 潜艇内有多个深海机器人。 潜艇到达深海海底后,深海机器人将离开潜艇向预定目标移动。 深海机器人在移动中还必须沿途采集海底生物标本。 沿途生物标本由最先遇到它的深海机器人完成采…

微信公众号公司主体变更怎么办?

公众号迁移的好处有哪些?迁移后原公众号还能用吗?1)获得更多权限功能如果公众号是个人主体,想进行认证,拥有更多权限功能。例如菜单栏跳转外部链接,相拥有留言功能,服务号认证获得开发权限等。就…

@德人合科技|公司数据防泄漏软件,防止内部文件数据资料外泄!

现如今,企业都普遍面临数据安全问题的挑战,随着数据泄漏事件不断增加,企业需要强有力的数据防泄漏系统来保护机密信息。 www.drhchina.com 德人合科技 | 公司数据防泄漏软件,防止内部文件数据资料外泄! 公司数据防泄漏…

基于springboot的精品在线试题库系统设计与实现(程序+数据库+文档)

** 🍅点赞收藏关注 → 私信领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅** 目录 一、研…

微软研究深度报告:Sora文转视频AI模型全景剖析及未来展望

论文由微软研究团队撰写,这篇论文深入探讨了Sora的发展背景、核心技术、新兴应用场景、现有的局限性以及未来的发展机会,基于公开资料和团队自行进行的逆向工程分析。文中详尽且逻辑清晰,建议细读全文以获得深入了解。 原文:Sora…

优思学院《质量工程师入门攻略2024》

作为一名质量工程师,进入这个行业首先需要理解“质量”的本质含义。质量并非单一维度,而是产品或服务在满足预期程度上的体现。从狭义到广义的质量,涵盖从产品细节到客户满意度的多个方面。 1. 质量的定义是以顾客需求为准 第一&#xff0c…

高级语言讲义2018计专(仅高级语言部分)

1.编写完整程序解决中国古代数学家张丘健在他的《算经》中提出的”百钱百鸡问题“:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁,母,雏各几何 …

每日一题-链表的中间结点

🌈个人主页: 会编辑的果子君 💫个人格言:“成为自己未来的主人~” 上面是解题题目: 解题思路:快慢指针法--慢指针一次指向下一个,快指针一次指向下两个 解答过程: /*** Definition for singly-linked…

shopify 如何实现阶梯价展示

在Shopify中,您可以通过使用变体(variants)和价格规则(price rules)来实现阶梯价展示。阶梯价是指随着购买数量的增加,商品价格逐渐降低的策略。以下是在Shopify上实现阶梯价展示的步骤: 1. 创…

全志D1s开发板软件入门之Hello World演示

Hello Word 本章节将讲解如何使用电脑(上位机)交叉编译一个打印 hello word 的小应用,并将其push到开发板(下位机)上运行起来,打印出 hello word。这是嵌入式应用开发的最基础步骤。在此之前,你…

JavaScript的for循环与双重for循环,聪明人已经收藏了

css盒模型 1,css盒模型基本概念? 2,标准模型和IE模型的区别:计算高度和宽度的不同,怎么不同,高度宽度是怎么计算的? 3,css如何设置这两种模型? 4,js如何设置…

【BUG】Windows状态栏总卡死解决办法

屋漏偏逢连夜雨,正在赶deadline呢,Windows状态老卡死,一时间崩溃。 解决办法: 右键状态栏新闻和咨询关掉 这个烧笔新闻与资讯我真服了

做分析用什么工具

做分析用什么工具 导读 数据分析是数据辅助决策的最后一公里,是最终的数据可视化展示与探索分析的部分,选择使用最适合的数据展示方式,可以帮助分析人员大大提升分析效率。 问题: ● 纠结选择哪个工具 ● 纠结从哪里学起&#x…

Java 学习和实践笔记(27):Object类的基本特性、toString方法以及IDEA的部分快捷键介绍

Object类基本特性: 1.Object类是所有类的父类,所有的Java对象都拥有Object类的属性和方法(注意拥有并不等于可以直接使用) 2.如果在类的声明中未使用extends,则默认继承Object类。 toString方法是Object类里定义的一个…

连接器中的PI “电源完整性”

【摘要/前言】 在连接器中,我们经常谈论信号完整性(SI)以及我们为最新应用开发新的高速连接器解决方案的工作。很多厂商在112Gbps PAM4信令领域非常活跃,但我们也经常谈论224Gbps PAM4。在之前对Samtec产品管理总监Keith Guetig的…

26.基于springboot + vue实现的前后端分离-就业管理系统

项目介绍 系统分为管理员、企业、求职者三个角色 管理员: 登录、个人中心、学生信息管理、企业信息管理、岗位分类管理、学历信息管理、友情链接管理、新闻资讯管理、收藏管理、招聘信息管理、应聘信息管理、求职者信息管理 企业: 注册、登录、个人…

【Leetcode 2673】使二叉树所有路径值相等的最小代价 —— 贪心法

2673. 使二叉树所有路径值相等的最小代价 给你一个整数n表示一棵 满二叉树 里面节点的数目,节点编号从1到n。根节点编号为1,树中每个非叶子节点i都有两个孩子,分别是左孩子2 * i和右孩子2 * i 1。 树中每个节点都有一个值,用下…

虚拟化之内存(Memory)

一 内存的查看方式 free -k/m/h cat /proc/meminfodmesg |grep memory free命令的实质是根据meminfo中的文件来提取信息 二 内存虚拟化 1.概念:由于物理MMU只能通过Host机的物理地址进行寻址,所以实现内存虚拟化,关键是需要将Guest机的…