当前位置: 首页 > news >正文

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

达美乐比萨作为全球知名的披萨连锁品牌,自1960年创立以来,始终致力于为消费者提供高品质、快速配送的披萨体验。在中国市场,达美乐凭借其“30分钟必达”的承诺和经典美式风味,逐渐赢得了广大消费者的青睐。品牌通过不断拓展门店网络、优化外卖服务体系,以及推出符合本土口味的新品披萨,成功在竞争激烈的餐饮市场中占据了一席之地。

本文将探讨如何利用GET请求从达美乐中国官方网站获取门店分布信息,并展示使用Python的requests库发送GET请求的方法,以提取详细的门店地址、营业时间、联系方式等关键信息。这些数据覆盖全国范围内的所有达美乐门店,并通过解析API返回的JSON格式响应数据进行处理,最终整理出结构化的门店列表。通过对这些门店数据的分析,不仅可以全面了解达美乐在国内市场的扩张趋势与区域布局特点,还能为消费者提供便捷的门店查询服务,提升整体用户体验。此外,结合各城市的门店密度、选址特征及周边消费环境,还可以深入洞察不同地区的消费偏好差异,从而为达美乐未来的产品开发策略、营销活动策划以及新店选址提供有力的数据支持与决策依据。

 达美乐门店位置查询:达美乐比萨官方订餐网站-外送30分钟必达-超时送免费比萨券

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

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

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

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

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

方法思路

  1. 找到对应数据存储位置,获取所有店铺列表的相关标签数据;
  2. 我们通过改变查询关键字(地级市),来遍历全国门店数据;
  3. 坐标转换,通过coord-convert库实现GCJ-02转WGS84;

因为达美乐不是所有城市都有门店,我们可以通过网站自带的城市列表,进行遍历里面的城市关系列表作为查询的城市字典结构进行后续的遍历;

第一步:我们先找到对应数据存储位置,获取所有门店列表,经过测试,每次查询一组关键词会对应一个html,我们通过修改关键词来进行数据获取,为了方便我们直接建立一个包含城市名,城市编码的字典,通过遍历关键词来查询全国数据;

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

完整代码#运行环境 Python 3.11

import requests
import csv
import time
import random
from urllib.parse import quote# 定义请求的 URL 和基础参数(不含动态字段)
url = "https://m8api.dominos.com.cn/dominos/menu/o-s-ms/misc.service/getStoreListByDistrict"
base_params = {"cityCode": "3100",             # 默认值,会在循环中被映射表覆盖"latitude": "31.067812","longitude": "121.522606","bdReferer": "上海市",           # 如需可改为其他城市"channelId": "1","channelCode": "WAP","isStoreCode": "true","storeCode": "96629","orderType": "0","serviceMethod": "0"
}# 要遍历的城市列表
cities_list = ["北京市", "天津市", "石家庄市", "唐山市", "廊坊市", "沈阳市", "上海市", "南京市", "无锡市", "常州市","苏州市", "南通市", "扬州市", "泰州市", "杭州市", "宁波市", "温州市", "嘉兴市", "绍兴市", "金华市","台州市", "合肥市", "福州市", "厦门市", "泉州市", "漳州市", "南昌市", "济南市", "青岛市", "烟台市","郑州市", "武汉市", "长沙市", "广州市", "深圳市", "珠海市", "汕头市", "佛山市", "江门市", "湛江市","惠州市", "东莞市", "中山市", "南宁市", "重庆市", "成都市", "西安市"
]# 城市到 cityCode 的映射(基于中国行政区划代码去掉末两位“00”)
city_code_map = {"北京市":"1100","天津市":"1200","石家庄市":"1301","唐山市":"1302","廊坊市":"1310","沈阳市":"2101","上海市":"3100","南京市":"3201","无锡市":"3202","常州市":"3204","苏州市":"3205","南通市":"3206","扬州市":"3210","泰州市":"3212","杭州市":"3301","宁波市":"3302","温州市":"3303","嘉兴市":"3304","绍兴市":"3306","金华市":"3307","台州市":"3310","合肥市":"3401","福州市":"3501","厦门市":"3502","泉州市":"3505","漳州市":"3506","南昌市":"3601","济南市":"3701","青岛市":"3702","烟台市":"3706","郑州市":"4101","武汉市":"4201","长沙市":"4301","广州市":"4401","深圳市":"4403","珠海市":"4404","汕头市":"4405","佛山市":"4406","江门市":"4407","湛江市":"4408","惠州市":"4413","东莞市":"4419","中山市":"4420","南宁市":"4501","重庆市":"5000","成都市":"5101","西安市":"6101"}# 用于汇总所有城市的门店数据
all_store_data = []for city in cities_list:# 复制基础参数并动态注入本次城市的 cityCode、storeCityName、orderTime、_randomcity_params = base_params.copy()city_params["cityCode"]        = city_code_map.get(city, base_params["cityCode"])city_params["storeCityName"]   = quote(city, safe="")                     # URL 编码后的城市名city_params["orderTime"]       = str(int(time.time() * 1000))             # 当前毫秒时间戳city_params["_random"]         = str(random.random())                     # 随机数try:resp = requests.get(url, params=city_params, timeout=5)resp.raise_for_status()stores = resp.json().get("data", [])except Exception as e:print(f"{city} 请求失败:{e}")time.sleep(0.2)continueif not stores:print(f"{city} 未返回门店信息。")else:for store in stores:all_store_data.append({"cityCode":         city_params["cityCode"],"cityNameCN":       city,"districtNameCN":   store.get("districtNameCN", ""),"lat":              store.get("lat", ""),"lng":              store.get("lng", ""),"openDate":         store.get("openDate", ""),"operatingEndTime": store.get("operatingEndTime", ""),"operatingStartTime": store.get("operatingStartTime", ""),"storeAddress":     store.get("storeAddress", ""),"storeName":        store.get("storeName", "")})print(f"{city} 共抓取到 {len(stores)} 条门店信息。")# 请求间隔,防止频率过高time.sleep(0.2)# 定义 CSV 字段顺序并写入文件
fieldnames = ["cityCode", "cityNameCN", "districtNameCN","lat", "lng", "openDate","operatingEndTime", "operatingStartTime","storeAddress", "storeName"
]with open("dominos_store_data.csv", mode="w", newline="", encoding="utf-8-sig") as csvfile:writer = csv.DictWriter(csvfile, fieldnames=fieldnames)writer.writeheader()writer.writerows(all_store_data)print("所有城市门店信息已成功导出到 dominos_store_data.csv")

获取数据标签如下,cityCode(城市编码)、cityName(城市名称)、districtName(区县名称)、lat,lon(坐标)、openDate(开业时间)、operatingStartTime(开始营业时间)、operatingEndTime(结束营业时间)、storeAddress(门店地址)、storeName(门店名称),其他一些非关键标签,这里省略;

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

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

达美乐比萨在中国的分布情况呈现出明显的地域特征。总体来看,门店主要集中在经济发达、人口密集的东部沿海地区和部分中部大城市。具体而言,在东南沿海城市如上海、深圳、广州等地,达美乐拥有最密集的门店网络,几乎覆盖了这些城市的各个角落。江苏和浙江的沿海城市,包括南京、杭州、宁波等,也设有较多的门店。此外,广东和福建的省会及重要城市,例如广州、厦门等,同样有着不错的覆盖度。

在中部地区,武汉、郑州和合肥等省会城市是达美乐布局的重点,显示出品牌对于中部市场的重视。北方地区方面,北京作为中国的首都,自然成为了达美乐门店数量最多的城市之一,而沈阳和大连这两个辽宁省内的重要城市也具有一定的门店规模。西南地区的成都和重庆由于其庞大的消费市场,也成为达美乐重点布局的城市,而西安则代表了西北部地区的一个亮点。

然而,在西部和西北部地区,如新疆、西藏、青海等地,达美乐的门店数量较少,分布相对稀疏。这表明尽管这些区域的市场潜力巨大,但目前尚未成为达美乐的主要拓展方向。针对这种情况,未来可以考虑加强对这些潜力市场的调研,了解当地消费者的偏好,并制定相应的市场进入策略,以填补这一市场空白。

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

相关文章:

  • 【网络编程】UDP协议 和 Socket编程
  • Seaborn一个用于统计图形绘制的高级API
  • 基于C++数据结构双向循环链表实现的贪吃蛇
  • AgeTravel | 银发文娱旅游一周新鲜事
  • 使用高德MCP+AI编程工具打造一个旅游小助手
  • 线程同步与互斥核心要点整理
  • 精益数据分析(30/126):电商商业模式的深度剖析与关键指标解读
  • linux安装ragflow
  • 《从线性到二维:CSS Grid与Flex的布局范式革命与差异解析》
  • Tailwind CSS 响应式设计解析(含示例)
  • 【算法练习】归并排序和归并分治
  • JAVA使用Apache POI导出Word,支持向表格动态添加多行数据
  • taro小程序如何实现大文件(视频、图片)后台下载功能?
  • 为什么要学习《金刚经》
  • [AI]browser-use + web-ui 大模型实现自动操作浏览器
  • Android项目中使用ComposeUI
  • Html 2
  • OpenGL学习笔记(延迟着色法、SSAO)
  • 「Mac畅玩AIGC与多模态07」开发篇03 - 开发第一个 Agent 插件调用应用
  • c++进阶——BinarySearchTree(无相同值)的简单实现
  • 习近平在上海考察
  • 国务院安委会对辽宁辽阳一饭店重大火灾事故查处挂牌督办
  • 马上评丨又见酒店坐地起价,“老毛病”不能惯着
  • 五一假期如何躺赚利息?来看国债逆回购操作攻略
  • 丁俊晖连续7年止步世锦赛16强,中国军团到了接棒的时候
  • 《中国奇谭》首部动画电影《浪浪山小妖怪》定档8月2日