HTML应用指南:利用POST请求获取全国三星门店位置信息
作为全球消费电子领域的领军者,三星(Samsung)始终致力于“开启无限可能”(Do What You Can't)的品牌使命,将前沿科技与人性化设计深度融合,持续引领智能生活方式的演进。在这一愿景驱动下,三星不仅在智能手机、显示技术、半导体和家电等领域保持创新领先,更通过构建全场景智慧生活生态,打通设备、服务与用户的无缝连接。
为深入分析三星线下渠道的战略布局,本文将探索如何通过程序化方式获取其门店分布数据。我们将利用Python的requests库,向三星中国服务支持平台发送模拟POST请求,抓取其官方门店位置信息接口返回的结构化数据。通过对JSON响应内容的解析,提取门店名称、地址、所在省市、坐标(经纬度),等关键字段,实现全国门店数据的自动化采集。
本文将探讨如何通过POST请求从官方网站或公开接口中获取三星门店的分布信息,并展示使用Python的requests库发送HTTP请求的方法,以提取详细的门店位置数据。这些信息涵盖全国范围内的门店,通过解析返回的JSON数据或HTML内容,实现对门店名称、地址、所在区域,等关键字段的结构化提取。此类数据采集方式有助于深入分析三星在不同省市的渠道布局策略、市场渗透率及其与区域经济、人口分布的关联性。通过对门店数据的清洗与整理,还可为后续的地理空间可视化、商圈竞争力分析、渠道优化决策及新店选址预测提供坚实的数据支持。
三星门店查询网址:三星门店查询-全方位服务|三星电子 中国
首先,我们找到门店数据的存储位置,然后看3个关键部分标头、负载、 预览;
标头:通常包括URL的连接,也就是目标资源的位置;
负载:对于POST请求:负载通常包含了传递的参数,因为所有参数都通过URL传递,这里我们可以看到省份、地级市的编码,销售产品类型,当前查询位置坐标,没有进行加密;
销售产品类型英文简码与下面的文字对应;
预览:指的是对响应内容的快速查看或摘要显示,可以帮助用户快速了解返回的数据结构或内容片段,我们可以看到数据在items里;
接下来就是数据获取部分,先讲一下方法思路,一共三个步骤;
方法思路
- 找到对应数据存储位置,获取省级行政区和市级行政区编码表数据;
- 我们通过requests库发送HTTP请求,来遍历全国门店的标签数据;
- 地理编码→地址转经纬度,再通过coord-convert库实现BD09转WGS84;
首先,我们直接在"Fetch/XHR"先找到对应数据存储位置, 我们可以看到响应请求有一个省级行政区id与名称对应关系的响应请求,另外这里的id也不是省级行政区id,而且网站自定义的id;
再往下看,我们可以看到一个市级行政区的这里的pid 刚刚对应上面省级行政区的id,而市级行政区的id也是网站自定义的id;
因为门店页面查询的赋值包括省级行政区id,和市级行政区id,所以我们通过修改行政区编码来进行数据获取,为了方便我们可以建立一个包含省级行政区和市级行政区编码的字典,通过遍历行政区编码来查询全国数据;
第一步:利用requests库发送HTTP请求获取所有省级行政区和市级行政区编码表,并根据标签进行保存,另存为csv;
完整代码#运行环境 Python 3.11
import requests
import csv# 请求 URL 和 headers
url = "https://support-cn.samsung.com/StoreLocation/ServiceStation/GetPCList"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36","Content-Type": "application/x-www-form-urlencoded; charset=UTF-8","X-Requested-With": "XMLHttpRequest","Referer": "https://support-cn.samsung.com/"
}# 获取所有省份数据
def get_provinces():data = {"Pid": "0"}response = requests.post(url, headers=headers, data=data)return response.json()# 获取指定省份下的二级行政区(城市)数据
def get_cities(province_id):data = {"Pid": str(province_id)}response = requests.post(url, headers=headers, data=data)return response.json()# 将数据保存为 CSV 文件(包含省份信息)
def save_to_csv(data, filename):# 更新 fieldnames:包含新增的 Province_Name 和 Province_Idfieldnames = ['Id', 'Pid', 'Name', 'Province_Id', 'Province_Name']with open(filename, 'w', newline='', encoding='utf-8-sig') as csvfile:writer = csv.DictWriter(csvfile, fieldnames=fieldnames)writer.writeheader()for item in data:writer.writerow(item)# 主函数
def main():provinces = get_provinces()all_data = []for province in provinces:province_id = province['Id']cities = get_cities(province_id)print(f"Processing {province['Name']} ({province_id}) - Found {len(cities)} cities")for city in cities:city['Province_Id'] = province_idcity['Province_Name'] = province['Name']all_data.append(city) # 注意:这里用 append,不是 extend(extend用于列表)# 保存所有城市数据到 CSVsave_to_csv(all_data, 'samsung_service_stations.csv')print("所有数据已成功保存到 'samsung_service_stations.csv'")if __name__ == "__main__":main()
获取数据标签如下:id(市级行政区id)、pid(省级行政区id)、name(市级行政区名称),其他一些非关键标签,这里省略;
第二步:利用POST请求获取所有店铺列表,并根据标签进行保存,另存为csv;
完整代码#运行环境 Python 3.11(特定城市版)
# -*- coding: utf-8 -*-
import requests
import csv
import time# 配置
csv_file = 'samsung_service_stations.csv'
output_csv = 'samsung_stores.csv'
url = "https://support-cn.samsung.com/StoreLocation/ServiceStation/GetStoreList"headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36","Content-Type": "application/x-www-form-urlencoded; charset=UTF-8","X-Requested-With": "XMLHttpRequest","Referer": "https://support-cn.samsung.com/"
}data_template = {"producttype": "HHP,TABLET,VPS,CCTV,HTS,REF,WM,VC,MNT","lng": "121.484781451302","lat": "31.234210545433964"
}def get_stores(pid, cid):payload = {**data_template, "province": str(pid), "region": str(cid)}try:res = requests.post(url, headers=headers, data=payload, timeout=10)return res.json().get("Items", [])except:return []def read_cities():with open(csv_file, 'r', encoding='utf-8-sig') as f:return [{k: int(v) if k in ['Id', 'Pid'] else vfor k, v in row.items()}for row in csv.DictReader(f)]def save_stores(stores):if stores:fieldnames = set().union(*[s.keys() for s in stores])with open(output_csv, 'w', newline='', encoding='utf-8-sig') as f:w = csv.DictWriter(f, fieldnames=fieldnames)w.writeheader()w.writerows(stores)print(f"数据已保存至: {output_csv}")# 主程序
cities = read_cities()
print(f"加载 {len(cities)} 个城市,开始请求...")all_stores = []
for i, c in enumerate(cities, 1):print(f"[{i}/{len(cities)}] {c['Province_Name']} - {c['Name']}")stores = get_stores(c['Pid'], c['Id'])for s in stores:s.update({'Source_Province': c['Province_Name'], 'Source_City': c['Name']})all_stores.extend(stores)time.sleep(0.3)print(f"完成!共获取 {len(all_stores)} 个服务站。")
save_stores(all_stores)
获取数据标签如下:Source_Province(省级行政区)、regionname(市级行政区)、name(门店名称)address(详细地址)、tel(电话)、lng&lat(地理坐标)、productType(销售商品类型),其他一些非关键标签,这里省略;
第三步:坐标系转换,由于三星门店数据使用的是百度坐标系(BD09),为了在ArcGIS上准确展示而不发生偏移,我们需要将门店的坐标从BD09转换为WGS-84坐标系。我们可以利用coord-convert库中的bd2wgs(lng, lat)函数,也可以用免费这个网站:批量转换工具:地图坐标系批量转换 - 免费在线工具;
对CSV文件中的门店坐标列进行转换,完成坐标转换后,再将数据导入ArcGIS进行可视化;
接下来,我们进行看图说话:
三星门店在中国的分布呈现出高度集聚与等级分明的特征,核心布局聚焦于经济发达、消费力强的一线及新一线城市。门店密集分布在北京、上海、深圳、广州、杭州、南京等东部沿海城市的核心商圈,普遍入驻SKP、国贸、万象城等高端商业综合体,打造集产品体验、品牌展示与专业服务于一体的旗舰店。这一布局策略清晰体现了三星从“大众市场”向“高端精品”路线的战略转型——不再追求渠道广度,而是通过高势能城市的“品牌灯塔”效应,强化其在折叠屏手机、Bespoke家电、Neo QLED电视等高端产品领域的市场影响力。
在中西部和北方地区,三星采取“以点带面”的渗透策略,依托省会城市和区域中心构建服务网络。成都、重庆、西安、武汉、沈阳等城市均设有区域级旗舰店,既满足当地高收入群体对高端电子产品的需求,也服务于庞大的存量用户群体,承担售后支持与生态联动功能。尤其值得注意的是,西安不仅是三星全球最大的NAND闪存生产基地,也成为其品牌展示的重要窗口,实现了“本地制造+品牌体验”的战略协同。而在东北和边远地区,门店分布相对稳定或稀疏,反映出三星对市场潜力与运营成本的审慎平衡。
总体来看,三星门店网络是中国市场战略重构的物理体现:从全面竞争转向精准深耕,从销量导向转向品牌与价值导向。尽管其智能手机市场份额已不足1%,但依托半导体制造优势、高端产品力和全场景智慧生态,三星仍在中国保持不可忽视的存在感。其门店不再是传统销售终端,而是技术体验中心、用户服务枢纽和品牌文化传播平台,支撑其在全球高端电子领域的持续影响力。可以说,三星并未“退出”中国,而是以更轻盈、更聚焦的方式,继续深耕这片关键市场。
三星门店在中国的布局呈现出明显的地域集中特征,江苏(233家)和广东(199家)为门店数量最多的省份,显示出品牌在经济发达、消费能力强的东部沿海地区的重点投入;山东(152家)、浙江(138家)及川豫两省(各132家)也形成重要市场支撑,体现对中部潜力区域的积极拓展;相比之下,西部和东北地区门店较少,如西藏5家、青海10家,反映出在人口密度低、经济相对滞后的区域布局较为谨慎。总体来看,三星门店的分布高度契合区域经济发展水平和消费潜力,形成了以东部为核心、中部为增长带、西部为补充的阶梯式市场布局。
文章仅用于分享个人学习成果与个人存档之用,分享知识,如有侵权,请联系作者进行删除。所有信息均基于作者的个人理解和经验,不代表任何官方立场或权威解读。