HTML应用指南:利用POST请求获取全国便利蜂门店位置信息

发布于:2025-09-03 ⋅ 阅读:(15) ⋅ 点赞:(0)

便利蜂(Bianlifeng)作为中国领先的数字化连锁便利店品牌,自创立以来始终坚持“用科技改变零售”的核心理念,致力于为城市消费者提供便捷、高效、高品质的日常消费服务。依托大数据驱动与人工智能算法深度融合的运营体系,便利蜂构建起覆盖多个重点城市的智能化门店网络,形成了以区域管理中心为枢纽、标准化门店为基础、移动应用与自助服务为延伸的新型零售服务生态。

门店作为便利蜂线下服务的核心节点,不仅是销售食品饮料、日用百货、鲜食快餐等高频消费品的重要场所,更是实现用户行为分析、动态定价优化、库存智能调度与即时配送协同的关键数据入口。每一家便利蜂门店均采用统一的视觉识别系统与数字化管理系统,注重购物环境的整洁性、安全性和科技感,广泛部署自助收银机、智能货架、远程巡店系统等技术设施,持续提升运营效率与顾客体验。

本文将探讨如何通过程序化方式,利用 POST 请求调用公开接口,从便利蜂官方服务平台获取门店分布数据。通过 Python 的 requests 库发送 HTTP 请求,解析返回的 JSON 结构化数据,提取门店编码(shopCode)、门店名称、所属城市与行政区(cityName, districtName)、详细地址、地理坐标(lng, lat)、营业时间(openFrom / openTo)以及服务功能(如是否支持外卖、自提、会员服务)等关键字段,实现对门店信息的自动化采集与结构化存储,该数据集可广泛应用于分析便利蜂的城市拓展策略、门店密度分布规律、商圈覆盖能力及城乡服务渗透水平等课题。例如,结合人口密度、交通流量、写字楼分布等外部数据,可建模评估新店选址潜力;通过时间序列分析门店增减趋势,可洞察企业战略重心的区域迁移。此类研究不仅为新零售行业的空间布局优化提供实证支持,也为智慧社区建设、城市便民服务规划与即时零售生态发展提供有力的数据参考。

便利蜂门店查询网址:便利蜂

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

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

负载:对于POST请求:负载通常包含了传递的参数,因为所有参数都通过URL传递,这里我们可以看到城市的编码,没有进行加密;

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

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

方法思路

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

首先,我们观察到它的查询方式依然是通过行政区id进行网点查询,那我们直接在"Fetch/XHR"先找到对应数据存储位置, 另外,根据上面负载的内容,我们可以知道,数据是直接通过行政区id进行传递的,为了方便我们可以建立一个包含行政区id的字典,通过遍历行政区名称来查询全国数据;

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

完整代码#运行环境 Python 3.11

import requests
import csv

url = "https://www.bianlifeng.com/product/free/city/openShop/v1"
csv_file = 'bianlifeng_cities.csv'

# 请求数据
res = requests.get(url, params={"_": __import__('time').time_ns()}, timeout=10).json()
data = res["data"]

# 提取 cityCode 和 cityName
cities = [{"cityCode": c["cityCode"], "cityName": c["cityName"]} for c in data]

# 保存为 CSV(UTF-8-SIG 防止 Excel 乱码)
with open(csv_file, 'w', encoding='utf-8-sig', newline='') as f:
    w = csv.DictWriter(f, fieldnames=["cityCode", "cityName"])
    w.writeheader()
    w.writerows(cities)

print(f"完成!共 {len(cities)} 个城市,已保存至:{csv_file}")

数据会以csv表格的形式,保存在运行脚本的目录下,数据标签包括:cityCode(城市id)、cityName(城市名称);

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

完整代码#运行环境 Python 3.11

import requests
import csv
import time

# ===== 配置 =====
url = "https://www.bianlifeng.com/product/free/list/city/v1"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}
csv_file = 'bianlifeng_stores.csv'

# ===== 门店字段定义 =====
fields = [
    "id", "shopCode", "name", "displayName",
    "address", "province", "city", "district",
    "lng", "lat", "businessPhone", "openFrom", "openTo"
]

def main():
    # 1. 先读取城市文件(bianlifeng_cities.csv)
    try:
        with open('bianlifeng_cities.csv', 'r', encoding='utf-8-sig') as f:
            cities = list(csv.DictReader(f))
    except Exception as e:
        return print("读取城市文件失败,请先运行城市提取脚本:", e)

    # 2. 准备保存门店数据
    with open(csv_file, 'w', encoding='utf-8-sig', newline='') as f:
        writer = csv.DictWriter(f, fieldnames=fields)
        writer.writeheader()

        total_shops = 0

        # 3. 遍历每个城市
        for city in cities:
            cityCode = city["cityCode"]
            cityName = city["cityName"]
            print(f"\n正在获取 {cityName} ({cityCode}) ...")

            try:
                res = requests.post(
                    url,
                    json={"cityCode": cityCode},
                    headers=headers,
                    timeout=10
                ).json()

                if res.get("status") != 0:
                    print(f"跳过 {cityName}: 接口返回错误 {res.get('msg', '未知')}")
                    continue

                shops = res["data"]
                print(f"获取到 {len(shops)} 家门店")

                for shop in shops:
                    loc = shop.get("location") or {}
                    ot = shop.get("openTime") or {}

                    row = {
                        "id": shop.get("id", ""),
                        "shopCode": shop.get("shopCode", ""),
                        "name": shop.get("name", ""),
                        "displayName": shop.get("displayName", ""),
                        "address": shop.get("address", ""),
                        "province": shop.get("province", ""),
                        "city": shop.get("city", ""),
                        "district": shop.get("district", ""),
                        "lng": loc.get("lng", ""),
                        "lat": loc.get("lat", ""),
                        "businessPhone": shop.get("businessPhone", ""),
                        "openFrom": ot.get("from", ""),
                        "openTo": ot.get("to", "")
                    }
                    writer.writerow(row)
                    total_shops += 1

            except Exception as e:
                print(f"请求 {cityName} 失败:", e)

            time.sleep(1)  # 友好请求,避免过快

    print(f"\n全部完成!共获取 {total_shops} 家门店,已保存至:{csv_file}")

if __name__ == "__main__":
    main()

获取数据标签如下:id(门店id)、name(门店名称)、address(门店地址)、province(所在行政省级行政区)、city(所以在地级行政区)、district(所在县级行政区)、lng&lat(地理编码)businessPhone(电话)、openFrom(营业开始时间)、openTo(营业结束时间),其他一些非关键标签,这里省略;

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

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

便利蜂作为近年来快速崛起的连锁便利店品牌,其在全国范围内的门店布局呈现出高度集中的区域化特征,并未实现广泛意义上的全国化覆盖。目前,企业的业务重心明显偏向北方市场,形成了以京津冀为核心、长三角为次中心的“双核驱动”格局。这种分布模式反映出便利蜂在战略上采取了区域深耕、稳扎稳打的发展路径,而非盲目扩张。

其中,北京市是便利蜂的绝对核心市场,门店数量高达592家,占全国总数的70%以上。这一数字不仅远超其他城市,也表明便利蜂在北京已进入深度渗透阶段,实现了高密度布点和品牌强曝光。北京市场的成熟运营为其积累了丰富的管理经验与供应链体系,成为企业发展的“大本营”和战略支点。

在京津冀区域,天津市以158家门店位居第二,与北京形成紧密的协同效应,进一步巩固了北方市场的整体优势。同时,廊坊市布局6家门店,虽数量不多,但地理位置关键,处于京津走廊的重要节点,有助于完善区域物流网络和服务通勤人群,体现出企业在区域一体化战略中的前瞻性布局。

相比之下,便利蜂在华东地区的拓展则显得较为谨慎,整体呈现“北强南弱”的格局。上海市作为南方市场的桥头堡,拥有37家门店,是长三角地区的运营支点;南京市紧随其后,有34家门店,显示出向南京都市圈辐射的意图。而杭州市和济南市分别仅有5家和7家门店,属于试探性布局,尚未形成规模效应,表明企业在南方市场仍处于试点和初步渗透阶段。

从城市选择来看,便利蜂优先聚焦于直辖市和省会等高能级城市,反映出其倾向于进入经济发达、人口密集、消费能力强的核心城市。这种策略有助于降低市场风险、提升单店效益,并依托大城市的品牌影响力辐射周边区域。总体而言,便利蜂当前的扩张模式是典型的“区域连锁”路径——以北京为大本营,逐步向外辐射,整体形成以北京为绝对核心,辐射天津、廊坊,形成强大的京津冀基本盘;同时以上海为支点,试探性布局长三角,整体呈现“北强南弱、区域聚焦”的典型区域连锁品牌特征。

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


网站公告

今日签到

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