HTML应用指南:利用POST请求获取全国中信银行网点位置信息
中信银行(China CITIC Bank)作为中国领先的股份制商业银行,始终秉持“以客户为中心”的服务宗旨,致力于为个人客户、企业客户及机构客户提供专业、高效、安全、便捷的综合金融服务。依托“轻资本、强协同、数字化”的发展战略,中信银行持续推进“智慧金融”与“生态银行”建设,深化线上线下一体化服务模式,构建起覆盖全国主要城市、延伸至重点县域的现代化金融服务网络,形成以总分行统筹管理为基础、营业网点为核心、智能终端与手机银行、网上银行等数字渠道为延伸的立体化服务体系。
营业网点作为中信银行线下服务的关键触点,不仅是办理存取款、财富管理、信贷融资、跨境金融、对公结算等核心业务的重要载体,更是传递“信守温度、专业致远”品牌理念、开展客户深度陪伴、提供定制化金融解决方案的综合服务空间。各网点严格遵循统一的服务标准与品牌形象规范,注重环境的舒适性、私密性与科技融合,广泛部署智能柜员机(VTM)、自助终端、智能导览系统及远程视频服务设备,积极打造“智慧网点”与“适老化服务示范点”,在提升服务效率的同时,兼顾不同客群的体验需求,持续增强客户获得感与满意度。
本文将探讨如何通过程序化方式,利用 POST 请求调用中信银行公开或半公开的服务接口(如网点查询接口),从其官方服务平台自动获取营业网点分布数据。通过 Python 的 requests 库发送 HTTP 请求,解析返回的 JSON 结构化响应,提取网点名称、所属城市、行政区划、详细地址、联系电话、营业时间、地理坐标(经纬度)等关键字段,实现对中信银行网点信息的高效、批量采集。该数据可广泛应用于分析中信银行的区域布局策略、渠道覆盖密度、重点城市群(如京津冀、长三角、粤港澳大湾区)的服务渗透能力,以及城乡金融服务可及性等研究课题,为金融地理分析、网点效能评估、商业选址决策、区域经济活力研判及智慧城市金融基础设施规划提供坚实的数据支撑。
中信银行网点查询网址:站点地图-中信银行
首先,我们找到网点数据的存储位置,然后看3个关键部分标头、负载、 预览;
标头:通常包括URL的连接,也就是目标资源的位置;
负载:对于POST请求:负载通常包含了传递的参数,因为所有参数都通过URL传递,这里我们可以看到省份行政区的名称,查询城市经纬度等标签,没有进行加密;
预览:指的是对响应内容的快速查看或摘要显示,可以帮助用户快速了解返回的数据结构或内容片段,我们可以看到数据在resultlist里;
接下来就是数据获取部分,先讲一下方法思路,一共三个步骤;
方法思路
- 找到对应数据存储位置,并手动生成一个地级行政区名称表用于后续进行遍历;
- 我们通过requests库发送HTTP请求,通过遍历地级行政区名称表来获取全国网点的标签数据;
- 地理编码→地址转经纬度,再通过coord-convert库实现BD09转WGS84;
首先,我们观察到它的查询方式依然是通过不同地级行政区名称进行门店查询,那我们直接在"Fetch/XHR"先找到对应数据存储位置, 我们可以看到响应请求包含省级行政区名称对应内容的响应请求,另外,根据上面负载的内容,我们可以知道,数据是直接通过行政区名称进行传递的,为了方便我们可以建立一个包含地级行政区名称的字典,通过遍历行政区名称来查询全国数据;
经过测试发现,每查询一个省,会响应一个city.htm的请求,里面是省级行政区,对应的地级行政区,那我们就先生成一个包含34个省、市自治区的list,去遍历所有对应的地级行政区名称,这里解释一下,为什么我们用网站本身的地级市名称,网上不是有公开的地级市名称列表么,1是因为,不是所有地级市都有对应网点数据,它可能返回为空,2是,就是名称叫法不同,比如有的必须输入全名"太原市",有的"太原"就可以;
第一步:利用requests库发送HTTP请求获取所有地级行政区名称表,并根据标签进行保存,另存为csv;
完整代码#运行环境 Python 3.11
import requests
import csv
import timeprovinces = ["北京市", "天津市", "河北省", "山西省", "内蒙古自治区","辽宁省", "吉林省", "黑龙江省", "上海市", "江苏省","浙江省", "安徽省", "福建省", "江西省", "山东省","河南省", "湖北省", "湖南省", "广东省", "广西壮族自治区","海南省", "重庆市", "四川省", "贵州省", "云南省","西藏自治区", "陕西省", "甘肃省", "青海省", "宁夏回族自治区","新疆维吾尔自治区"
]url = "https://etrade.citicbank.com/portalweb/ot/city.htm"
headers = {"User-Agent": "Mozilla/5.0"}with open("citic_cities.csv", "w", encoding="utf-8-sig", newline="") as f:writer = csv.writer(f)writer.writerow(["province", "cityname"])for p in provinces:print("查询:", p)data = {"province": p,"tcstNo": "", "userId": "", "pwdControlFlag": "0","responseFormat": "JSON", "random": "123"}try:resp = requests.post(url, data=data, headers=headers, timeout=10)result = resp.json().get("content", {}).get("resultList", [])seen = set()for r in result:city = r.get("cityname")if city and city not in seen:writer.writerow([p, city])seen.add(city)except Exception as e:print("错误:", e)time.sleep(0.3)print("完成!数据已保存到 citic_cities.csv")
数据会以csv表格的形式,保存在运行脚本的目录下,数据标签包括:province (省级行政区名称)、cityname(地级行政区名称);
第二步:利用POST请求获取所有中信银行网点数据,并根据标签进行保存,另存为csv;
完整代码#运行环境 Python 3.11
import requests
import csv
import timecity_file = "citic_cities.csv"
output_file = "citic_all_branches.csv"
url = "https://etrade.citicbank.com/portalweb/pq/branchSearch.htm"
headers = {"User-Agent": "Mozilla/5.0"}fieldnames = ["cityName", "branchName", "branchAdd", "branchTel","bsnTime", "branchLng", "branchLat", "distance", "branchNo"
]with open(output_file, "w", encoding="utf-8-sig", newline="") as f_out:writer = csv.DictWriter(f_out, fieldnames=fieldnames)writer.writeheader()with open(city_file, encoding="utf-8") as f_in:cities = [row["cityname"] for row in csv.DictReader(f_in) if row.get("cityname")]print(f"共 {len(cities)} 个城市,开始查询...")for i, city in enumerate(cities, 1):print(f"[{i}/{len(cities)}] {city}")payload = {"cpLng": "116.407526","cpLat": "39.904030","cityName": city,"pageFlag": "0","tcstNo": "", "userId": "", "pwdControlFlag": "0","responseFormat": "JSON","random": str(int(time.time() * 1000) % 100000)}try:resp = requests.post(url, data=payload, headers=headers, timeout=10)data = resp.json()# 安全提取 resultListcontent = data.get("content") if data else Noneresult_list = content.get("resultList") if isinstance(content, dict) else Nonebranches = result_list if isinstance(result_list, list) else []for b in branches:writer.writerow({"cityName": city,**{k: b.get(k, "") for k in fieldnames[1:]}})except Exception as e:print("", e)time.sleep(0.6)print("完成!数据已保存到", output_file)
获取数据标签如下:branchNo(门店id)、branchName(门店名称)、branchAdd(详细地址)、cityName(门店所在城市)、branchlat&branchlng(地理坐标)、branchTel(门店电话)、bsnTime(营业时间),其他一些非关键标签,这里省略;
第三步:坐标系转换,由于中信银行网点数据使用的是百度坐标系(BD-09),为了在ArcGIS上准确展示而不发生偏移,我们需要将网点的坐标从BD-09转换为WGS-84坐标系。我们可以利用coord-convert库中的bd2wgs(lng, lat)函数,也可以用免费这个网站:批量转换工具:地图坐标系批量转换 - 免费在线工具;
对CSV文件中的网点坐标列进行转换,完成坐标转换后,再将数据导入ArcGIS进行可视化;
接下来,我们进行看图说话:
中信银行的网点分布呈现出鲜明的“东密西疏”格局,高度集中于中国经济最活跃的三大城市群:长三角、珠三角和京津冀。在上海、深圳、北京等超一线城市,网点密度极高,不仅覆盖核心商圈,还深入高端社区与产业园区。这种布局充分体现了中信银行“以客户为中心”的战略导向——优先服务高净值个人客户、大型企业集团及科技创新型企业。同时,杭州、南京、广州、苏州、宁波等新一线城市的密集设点,也反映出其对区域经济引擎城市的深度绑定,确保在最具活力的市场中占据先机。
在中部地区,中信银行采取“省会引领、重点城市辐射”的稳健策略。武汉、郑州、长沙、合肥、南昌等省会城市均设有多个网点,并逐步向宜昌、洛阳、株洲等经济基础较好的地级市延伸。这一布局既响应了国家“中部崛起”战略,也契合当地城镇化与产业升级带来的金融需求增长。尽管网点密度不及东部沿海,但覆盖范围广、结构合理,显示出中信银行在平衡区域发展与经营效率之间的审慎考量。
相比之下,西部和东北地区的网点布局则更为聚焦和克制。在西部,中信银行主要落子于成都、重庆、西安、昆明、贵阳等区域中心城市,基本未向地州或县域下沉,体现出“重核心、轻边缘”的资源配置逻辑。而在东北,受区域经济活力相对不足的影响,网点主要集中在沈阳、大连、哈尔滨、长春等省会及计划单列市,整体呈现“维持存量、谨慎增量”的态势。值得注意的是,中信银行在乌鲁木齐、拉萨、西宁等边疆省会亦有零星布点,既体现国有金融体系的全局视野,也服务于国家边疆稳定与区域协调发展的宏观目标。
整体来看,中信银行的物理网点布局与其“轻型银行”“金融科技银行”的战略高度协同:在高潜力区域强化线下服务触点以支撑复杂业务与客户信任建立,同时依托数字化渠道覆盖低密度区域,实现成本与服务的最优平衡。未来,随着成渝双城经济圈、长江中游城市群等国家战略深入推进,中信银行有望进一步加密中西部核心城市的网点网络;同时,在乡村振兴与普惠金融政策引导下,也可能通过“智能网点+移动服务”模式,适度向县域经济延伸,持续优化其全国一体化、多层次的服务生态。
文章仅用于分享个人学习成果与个人存档之用,分享知识,如有侵权,请联系作者进行删除。所有信息均基于作者的个人理解和经验,不代表任何官方立场或权威解读。