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"

    # 保存为CSV
    with 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等线上平台实现服务延伸,实现"线下精耕、线上广覆"的协同发展模式。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图说交通

买猫粮,楼下的流浪猫在等我

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值