HTML应用指南:利用POST请求获取城市肯德基门店位置信息

发布于:2025-03-25 ⋅ 阅读:(31) ⋅ 点赞:(0)

随着新零售业态的快速发展,门店位置信息的获取变得越来越重要。作为快餐服务行业的先锋,肯德基不仅在服务质量上持续领先,还积极构建广泛的门店网络,以支持其不断增长的用户群体。为了更好地理解和利用这些数据,本篇文章将深入探讨POST请求的实际应用,并展示如何通过Python的requests库发送POST请求,从肯德基官方网站获取详细的门店位置信息,包括全国范围内的所有肯德基餐厅以及其他相关服务点。本文将详细介绍如何解析构造请求、处理响应数据,并实现数据可视化,这里以上海市为例进行数据获取和可视化。

肯德基官方网址:肯德基餐厅信息查询

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

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

    负载:对于POST请求:负载通常包含了传递的参数,这里我们可以看到它的传参包括,城市名称和页码,还是明文,没有进行加密;

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

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

    方法思路

    1. 找到对应数据存储位置,获取所有店铺列表;
    2. 获取所有店铺列表的相关标签数据,另存为csv;
    3. 坐标转换,通过coord-convert库实现GCJ-02转WGS84;
    4. 点数据在arcgis上进行可视化;

    第一步:我们先找到对应数据存储位置,获取所有店铺列表,我们从预览可知上海一共963家,一页是10条,也就是97页即可遍历上海肯德基的门店数量;

    第二步:利用POST请求获取所有店铺列表,并根据标签进行保存,另存为csv;

    完整代码#运行环境 Python 3.11

    import requests
    import csv
    import time
    import random
    
    
    def fetch_kfc_store_info(page_index):
        url = "https://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=cname"
    
        # 定义请求数据
        data = {
            'cname': '上海',  # 城市名称
            'pid': '',  # 父级ID,留空
            'pageIndex': page_index,  # 页码
            'pageSize': 10  # 每页条数
        }
    
        try:
            # 发送POST请求
            response = requests.post(url, data=data)
            response.raise_for_status()  # 检查请求是否成功
    
            # 解析返回的数据
            data = response.json()
    
            # 提取门店信息
            results = []
            if 'Table1' in data and isinstance(data['Table1'], list):
                for store in data['Table1']:
                    store_name = store.get("storeName")
                    address_detail = store.get("addressDetail")
                    city_name = store.get("cityName")
                    pro = store.get("pro")
                    province_name = store.get("provinceName")
                    rownum = store.get("rownum")
    
                    results.append((store_name, address_detail, city_name, province_name, pro, rownum))
    
            return results
    
        except Exception as e:
            print(f"发生错误: {e}")
            return []
    
    
    def save_to_csv(data, filename='kfc_stores.csv'):
        # 保存数据到CSV文件
        with open(filename, mode='w', newline='', encoding='utf-8') as file:
            writer = csv.writer(file)
            writer.writerow(
                ['Store Name', 'Address Detail', 'City Name', 'Province Name', 'Other Info', 'Row Number'])  # 写入表头
            writer.writerows(data)  # 写入数据
    
    
    if __name__ == "__main__":
        all_results = []
    
        # 遍历1到97页
        for page_index in range(1, 98):
            print(f"Fetching data for page: {page_index}")
            results = fetch_kfc_store_info(page_index)
            all_results.extend(results)  # 将结果添加到总结果中
    
            # 随机延时,范围在1到3秒之间
            delay = random.uniform(1, 3)
            print(f"Waiting for {delay:.2f} seconds before the next request...")
            time.sleep(delay)
    
        if all_results:
            print("所有门店信息:")
            for store in all_results:
                print(store)
    
            # 保存到CSV文件
            save_to_csv(all_results)
            print("数据已保存到 kfc_stores.csv")
        else:
            print("未能提取数据。")

    获取到的数据标签如下,addressDetail(详细地址)、cityName(所在城市)、pro(门店标签)、provinceName(所在省 )、storeName(门店名称);

    tips:1、我在脚本里增加了1~3秒的每次查询随机延时,防止频繁访问;2、如果需要调整获取数据的城市的话,可以获取修改"cname"字段,如果需要多个城市的的话,可以写成字典进行遍历;

    第三步:地理编码和坐标系转换,这里我们需要把获取的门店地址进行地理编码,具体实现方法可以参考我这篇文章:地址转坐标:利用高德API进行批量地理编码_高德地图api-CSDN博客

    这里直接下载转换结果,坐标系GCJ-02,当然还有个别地址描述太模糊的或者格式无法识别,会查不出坐标,直接用高德坐标拾取器手动查一下坐标即可,大部分还是可以查到的,因为当前坐标系是GCJ02,需要批量转成WGS84/BD09的话可以用免费这个网站:批量转换工具:地图坐标系批量转换 - 免费在线工具 (latlongconverter.online),也可以通过coord-convert库实现GCJ-02转WGS84;

    第四步:坐标数据可视化,我们把转好的WGS84坐标信息放到argis进行可视化,可以看到盒马门店在空间上的分布情况;

    接下来,我们进行看图说话,根据分析肯德基在上海的门店分布,可以观察到以下几个明显的特征:

    • 城市中心区域的高度关注肯德基在上海的布局显示了其对于城市中心区域的高度关注。特别是在黄浦、静安和徐汇等核心商业区,门店数量众多,这些地区不仅是上海的经济活动中心,同时也是人口密集的居住区。这种集中分布不仅能够最大化地覆盖高消费人群,同时也利用了这些区域作为交通枢纽的优势,吸引大量过往行人和游客。

    • 主要交通动脉沿线的线性分布:沿着上海的主要交通动脉,如延安路、南京路以及淮海路等肯德基门店呈现线性分布。这表明品牌在选址时充分考虑到了交通便利性和人流密集度,通过这种方式来确保店铺拥有稳定的客源。此外,重要交通枢纽如火车站、地铁站和大型公交枢纽附近也有肯德基的身影,这些地点通常是人们出行和换乘的必经之地,为顾客提供了便捷的用餐选择。

    • 郊区和新兴商业区的探索:尽管市中心是肯德基的重点布局区域,但在郊区和城市边缘地带的分布则相对较少。这反映出品牌在拓展市场时,优先选择了具有更高商业价值和发展潜力的地段。然而,在一些新兴发展的商业区和居民区内,仍然可以看到肯德基门店的存在,显示出品牌对于新市场的积极探索和对不同消费群体需求的关注。

    • 适应多种消费场景的能力:值得注意的是,肯德基的选址策略还体现了对不同消费场景的适应能力。除了繁华商业区外,学校、医院及公园周边也能找到肯德基的身影。这样的布局有助于扩大品牌的受众基础,满足包括学生、上班族、家庭在内的多样化消费需求。

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


    网站公告

    今日签到

    点亮在社区的每一天
    去签到