HTML应用指南:利用GET请求获取全国招商银行网点位置信息

招商银行(China Merchants Bank, CMB)作为中国领先的股份制商业银行,始终坚持“以客户为中心”的服务理念,致力于为个人客户、企业客户及机构客户提供专业、高效、便捷的综合金融服务。依托“轻型银行”战略与“金融科技银行”建设,招商银行持续推进线上线下融合的服务模式,构建起覆盖全国主要城市、辐射重点县域的现代化金融服务网络,形成以总分行统筹管理为基础、营业网点为核心、智能设备与移动端平台为延伸的立体化服务体系。

营业网点作为招商银行线下服务的重要支点,不仅是办理存取款、理财、贷款、跨境金融等核心业务的关键场所,更是传递品牌价值、推广财富管理产品、开展客户陪伴式服务与提供专业金融咨询的综合体验空间。各营业网点遵循统一的服务标准与品牌形象规范,注重服务环境的私密性、舒适性与科技感,广泛部署智能柜员机、VTM远程柜员终端、智能排队系统等数字化设备,积极打造“智慧网点”,持续提升服务效率与客户满意度。

本文将探讨如何通过程序化方式,利用 GET 请求调用公开接口,从招商银行相关服务平台获取营业网点分布数据。通过 Python 的 requests 库发送 HTTP 请求,解析返回的 JSON 结构化数据,提取网点名称、所属城市、行政区划、详细地址、营业时间、服务功能及地理坐标等关键字段,实现对网点信息的自动化采集。该数据可广泛应用于分析招商银行的区域布局策略、渠道覆盖密度、重点经济圈服务渗透率以及城乡金融服务可及性等课题,为金融地理研究、银行网点优化布局、商业选址分析及智慧城市建设提供有力的数据支持。

招商银行网点查询网址:招商银行 -- 网点地图

首先,我们找到门店数据的存储位置,然后看3个关键部分标头、负载、 预览;

标头:通常包括URL的连接,也就是目标资源的位置;

负载:对于GET请求:负载通常包含了传递的参数,有些网页负载可能为空,或者没有负载,因为所有参数都通过URL传递,这里我们可以看到cityname(城市名称),type(查询类型),没有进行加密;

预览:指的是对响应内容的快速查看或摘要显示,可以帮助用户快速了解返回的数据结构或内容片段,我们可以看到数据在list里;

接下来就是数据获取部分,先讲一下方法思路,一共三个步骤;

方法思路

  1. 找到对应数据存储位置,获取地级行政区表数据;
  2. 我们通过requests库发送HTTP请求,来遍历全国网点的标签数据;
  3. 地理编码→地址转经纬度,再通过coord-convert库实现BD09转WGS84;

首先,我们观察到它的查询方式依然是通过不同行政区层级进行网点查询,那我们直接在"Fetch/XHR"先找到对应数据存储位置, 我们可以看到响应请求包含地级行政区、查询类型等对应内容的响应请求,另外,根据上面负载的内容,我们可以知道,数据是直接通过行政区名称进行传递的;

因为网点查询页面的负载包括地级行政区名称,所以我们通过修改行政区名称来进行数据获取,为了方便我们可以建立一个包含地级行政区的字典(因为招商银行不是在所有行政区都有网点,所以以网页提供的行政区为准),通过遍历行政区名称来查询全国数据;

第一步:利用requests库发送HTTP请求获取所有地级行政区的表,并根据标签进行保存,另存为csv;

完整代码#运行环境 Python 3.11

import requests
import csv
from datetime import datetime# 请求数据
response = requests.get("https://map.cmbchina.com/api/map/getProCityInfo",headers={'User-Agent': 'Mozilla/5.0'},timeout=10
)if response.status_code == 200:data = response.json()filename = f"pro_city_info.csv"# 保存为CSVwith open(filename, 'w', encoding='utf-8-sig', newline='') as f:writer = csv.writer(f)writer.writerow(['省份', '城市', '纬度', '经度'])for prov in data['body']['provList']:[writer.writerow([prov['provName'], c['cityName'], c['lat'], c['lng']])for c in prov['cityList']]print(f"数据已保存到 {filename}")
else:print(f"请求失败: {response.status_code}")

数据会以csv表格的形式,保存在运行脚本的目录下,数据标签包括:省份、城市、经纬度;

第二步:利用GET请求获取所有银行网点数据,并根据标签进行保存,另存为csv;

完整代码#运行环境 Python 3.11

import requests
import csv# 读取城市列表
def read_cities_from_csv(filename):cities = []with open(filename, 'r', encoding='utf-8-sig') as f:reader = csv.DictReader(f)for row in reader:city_name = row['城市']if city_name:cities.append(city_name)return cities# 输出文件名固定
output_filename = "cmb_bank.csv"# 打开输出CSV文件并写入表头
with open(output_filename, 'w', encoding='utf-8-sig', newline='') as output_file:writer = csv.writer(output_file)writer.writerow(['城市', 'branchNo', 'lat', 'lng', 'name', 'type'])# 读取城市列表cities = read_cities_from_csv('pro_city_info.csv')# 遍历每个城市for city in cities:url = f"https://map.cmbchina.com/api/map/getCmbData?cityName={city}&type=B"try:response = requests.get(url, headers={'User-Agent': 'Mozilla/5.0'}, timeout=10)if response.status_code == 200:data = response.json()if data['returnCode'] == 'SUC0000':branches = data['body']count = len(branches)# 打印每个城市的返回条数print(f"城市:{city},{count}条")# 写入数据for branch in branches:writer.writerow([city,branch['branchNo'],branch['lat'],branch['lng'],branch['name'],branch['type']])else:print(f"城市:{city},请求失败: {data['errorMsg']}")else:print(f"城市:{city},HTTP错误: {response.status_code}")except Exception as e:print(f"城市:{city},请求时发生错误: {e}")print(f"所有数据已保存到 {output_filename}")

这里有一个tips:1、tpye:B对应的是营业网点,tpye:C对应的是自助银行,tpye:A对应的是自动柜员机",如果需要修改查询类型,可直接修改type;

获取数据标签如下:城市、branchNo(营业厅编号)、lat&lng(地理坐标)、name(营业厅名称)、type(查询类型),其他一些非关键标签,这里省略;

第三步:坐标系转换,由于招商银行网点数据使用的是百度坐标系(BD09),为了在ArcGIS上准确展示而不发生偏移,我们需要将网点的坐标从BD09转换为WGS-84坐标系。我们可以利用coord-convert库中的bd2wgs(lng, lat)函数,也可以用免费这个网站:批量转换工具:地图坐标系批量转换 - 免费在线工具;
对CSV文件中的网点坐标列进行转换,完成坐标转换后,再将数据导入ArcGIS进行可视化;

接下来,我们进行看图说话:

招商银行(CMB)在中国大陆的网点分布呈现出显著的区域不均衡性东部沿海地区是其网点布局的核心区域,尤其是长三角(上海、江苏、浙江)、珠三角(广东)、京津冀(北京、天津、河北)等经济高度发达地区。这些区域城市化进程快、人口密集、商业活动活跃,对综合性金融服务的需求旺盛,因此招商银行在此类地区实现了高密度覆盖,充分体现了其对重点经济圈的战略聚焦。

相比之下,中部地区如河南、湖北、湖南等地虽有一定数量的网点布局,但整体密度仍低于东部沿海;而西部及东北地区的网点分布则明显稀疏,尤其在新疆、青海、西藏、内蒙古等偏远省份,网点数量极少甚至存在空白区域,这主要受限于当地人口密度低、经济总量较小以及运营成本较高等因素。

在城市层级上,一线城市(北京、上海、广州、深圳)的网点数量最多,几乎覆盖所有城区,展现出招商银行在核心市场的深度渗透与品牌影响力。同时,省会城市及重要经济节点城市,如成都、武汉、杭州、南京等,也是网点集中布局的重点区域,反映出其“以中心城市带动区域发展”的渠道策略,城乡金融服务差距显著。在大城市及其周边卫星城,网点高度密集,形成了高效便捷的“15分钟金融服务圈”,能够全面满足居民和企业的存贷汇、理财、对公等多元需求;而在广大农村及偏远县域,物理网点数量极少,服务主要依赖数字化渠道,凸显出传统银行服务在地理覆盖上的局限性。

从战略角度看,招商银行作为国内零售银行业务的领军者,其网点布局与人口集聚度、消费活力和财富水平高度匹配,充分契合其“轻型银行”和“金融科技银行”的双轮驱动战略。在高密度城市区域,招商银行持续推进智慧网点建设,广泛部署智能柜员机、VTM远程柜员、AI客服等科技设备,提升服务效率,释放人力专注于财富管理等高附加值业务。而在低密度区域,则更多通过手机银行、掌上生活App等线上平台实现服务延伸,实现"线下精耕、线上广覆"的协同发展模式。

文章仅用于分享个人学习成果与个人存档之用,分享知识,如有侵权,请联系作者进行删除。所有信息均基于作者的个人理解和经验,不代表任何官方立场或权威解读。

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

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

相关文章

JVM性能监控工具的使用

了解JVM性能监控工具并能熟练使用,是Java开发者进阶的必备技能。下面本文将为你介绍一些主流的JVM性能监控工具及其使用方法,并通过一些场景案例来分析如何应用这些工具解决实际问题。 🛠️ JVM性能监控与调优工具指南 ✨ 工具概览 以下是几款…

【工作】一些找工作需要了解避雷的知识

面试前 1.公司的具体情况 公司全称,办公地点,涉及岗位 要求hr做个简单的公司介绍 2.岗位职责/业务方向 工作内容、公司业务 3.薪资待遇,构成,底薪,五险一金 问一下工资范围 底薪 (有责,无…

五、练习2:Git分支操作

练习2:Git分支操作 练习目标 掌握Git分支的创建、切换、合并等操作,理解分支在开发中的作用。 练习步骤 步骤1:准备基础仓库 # 创建练习目录 mkdir branch-practice cd branch-practice# 初始化仓库 git init# 创建初始文件 echo "# 分支…

【笔记】算法设计:异或空间线性基

Content1.什么是异或(定义和性质)2.异或空间线性基的构造方法3.异或空间线性基的应用4.算法设计例举5.小结说明算法设计应用之前,首先明确异或空间线性基:一种数据结构。用于处理异或关系(运算)下的向量空间…

Filebeat采集数据与日志分析实战

🌟Filebeat采集数据的原理 Filebeat默认按行采集数据,如果数据没有换行,则该条数据无法采集到 属于有状态服务,可以记录上一次采集数据的位置点信息 修改配置文件 vim /etc/filebeat/config/03-log-to-console.yaml filebeat.inp…

Fluent Bit针对kafka心跳重连机制详解(下)

#作者:程宏斌 文章目录disconnectreconnect接上篇:https://blog.csdn.net/qq_40477248/article/details/150957571?spm1001.2014.3001.5501disconnect 断开连接的情况主要是两种: 连接或传输过程中有错误发生 超时, 比如空闲时间超时 ** * Close and …

React 第七十一节 Router中generatePath的使用详解及注意事项

前言 generatePath 是 React Router 的一个实用工具函数,用于根据路径模式和参数对象生成实际的 URL 路径。它在需要动态构建链接的场景中非常有用,比如生成导航链接或重定向路径。 1、基本用法和注意事项 import { generatePath } from react-router-do…

Python 爬虫案例:爬取豆瓣电影 Top250 数据

一、案例背景与目标 豆瓣电影 Top250 是国内权威的电影评分榜单之一,包含电影名称、评分、评价人数、导演、主演、上映年份、国家 / 地区、类型等关键信息。本案例将使用 Python 编写爬虫,实现以下目标: 自动请求豆瓣电影 Top250 的 10 个分…

SPA安全警示:OAuth2.0致命漏洞

OAuth2.0在SPA应用中的安全陷阱SPA(单页应用)通常采用隐式授权(Implicit Flow)或PKCE(Proof Key for Code Exchange)授权模式,但存在以下安全隐患:隐式授权模式的漏洞访问令牌直接暴…

table表格字段明细展示

文章目录1、字段渲染2、异步请求展示明细3、hover展示问题3.1 基本逻辑3.2 hover时长判断3.3 renderhover表格字段明细展示,属于比较小的需求,但是也有一定交互细节,本文选取部分场景。 1、字段渲染 render和渲染组件是有区别的。render常见为…

主网上线后生态极速扩张的 Berachain 生态,有哪些值得关注的项目?

Berachain 是典型的将 DeFi 思维嵌入到共识机制中的 Layer1,其核心是 PoL(Proof of Liquidity)共识。PoL 要求验证者在获得区块奖励前,必须将流动性导入白名单协议,并由市场决定资金流向。这样,验证者的权重…

claude-code对比GitHub-Copilot

Claude Code 文档日期:2025 年 08 月 20 日 定位 项目级开发助手,专注于全局视野和复杂任务的处理。 特点 超长上下文支持:支持 200k 超长上下文,适合处理复杂项目。丰富的自定义命令:提供灵活的命令配置,满…

Roo Code自定义Mode(模式)

什么是自定义模式? 简单来说,自定义模式就像是给Roo Code穿上不同的"职业装"。你可以创建针对特定任务或工作流程量身定制的模式,让Roo在不同场景下表现出专业的行为。 这些模式分为两种类型:全局模式(在所有…

Next.js渲染模式:SSR、SSG与ISR揭秘

Next.js 核心渲染模式深度解析:SSR、SSG 与 ISR 在构建现代 Web 应用时,性能和用户体验是至关重要的考量。Next.js 作为 React 生态中一个备受推崇的框架,其强大的服务端渲染(SSR)、静态站点生成(SSG&#…

Veo Videos Generation API 对接说明

本文介绍了如何对接 Veo Videos Generation API,通过输入自定义参数生成Veo官方视频。 下面将详细阐述 Veo Videos Generation API 的对接流程。 申请流程 使用 API 前,需前往 Veo Videos Generation API 页面申请服务。进入页面后,点击「…

YOLO 目标检测:YOLOv3网络结构、特征输出、FPN、多尺度预测

文章目录一、YOLOV31、网络结构1.1 整体结构1.2 主干网络1.3 特征输出1.4 特征融合FPN(Feature Pyramid Networks)FPN 融合上采样融合2、多尺度预测3、损失函数4、性能对比一、YOLOV3 YOLOv3(You Only Look Once v3)是YOLO系列中…

【GIS图像处理】有哪些SOTA方法可以用于将1.5米分辨率遥感图像超分辨率至0.8米精度的?

针对将1.5米分辨率遥感图像超分辨率至0.8米的需求,当前主流方法可分为以下几类,结合最新研究进展和实际应用场景,具体技术方案及SOTA方法如下: 一、基于Transformer的高效建模 1. Top-k标记选择Transformer(TTST) 核心机制:通过动态选择前k个关键标记(token),消除冗…

【电力电子】逆变器控制策略:PQ Droop下垂控制、电压电流双环控制与SPWM调制

逆变器中的 PQ Droop 控制。 1. PQ Droop 控制的定义 PQ Droop(有时也称为功率下垂控制,Power Droop Control)是微电网、并联系统或逆变器并网运行中常用的一种分布式功率控制方法。 P-Droop(有功下垂):通过调节逆变器输出频率与有功功率之间的关系实现功率分配。 Q-Dro…

【LeetCode 热题 100】5. 最长回文子串——中心扩散法

Problem: 5. 最长回文子串 文章目录整体思路完整代码时空复杂度时间复杂度:O(N^2)空间复杂度:O(1)整体思路 这段代码旨在解决经典的 “最长回文子串” (Longest Palindromic Substring) 问题。问题要求在一个给定的字符串 S 中,找到一个最长…

六、练习3:Gitee平台操作

练习3:Gitee平台操作 练习目标 掌握Gitee平台的基本操作,包括创建仓库、推送代码、团队协作等。 练习步骤 步骤1:Gitee账号准备 访问 gitee.com注册账号(如果还没有)登录Gitee 步骤2:配置SSH密钥 # …