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

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

小龙坎官方网址:小龙坎火锅【官网】-成都知名火锅-四川特色火锅-门店查询

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

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

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

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

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

方法思路

  1. 找到对应数据存储位置,获取所有店铺列表的相关标签数据;
  2. 我们通过改变查询关键字(地级市名称),来遍历全国门店数据;
  3. 坐标转换,通过coord-convert库实现BD-09转WGS84;
  4. 点数据在arcgis上进行可视化;

**第一步:**我们先找到对应数据存储位置,获取所有店铺列表,我们从预览可知上海一共7家;

经过测试,每次查询城市会返回一个html,我们通过修改负载的城市名称来进行数据获取,为了方便我们直接建立一个包含地级行政区的字典,通过遍历地级行政区查询全国数据;

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

完整代码#运行环境 Python 3.11

python 复制代码
import requests
import pandas as pd
import time

# 请求的 URL
url = "https://www.xiaolongkan.com/apistore.html"

# 请求的头部
headers = {
    "user-agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Mobile Safari/537.36 Edg/134.0.0.0",
}

# 城市列表
cities = [
    "上海市", "北京市", "天津市", "重庆市", 
    # 地级市(293个)
    "石家庄市", "唐山市", "秦皇岛市", "邯郸市", "邢台市", "保定市", "张家口市", "承德市", "沧州市", "廊坊市", "衡水市",
    "太原市", "大同市", "阳泉市", "长治市", "晋城市", "朔州市", "晋中市", "运城市", "忻州市", "临汾市", "吕梁市",
    "呼和浩特市", "包头市", "乌海市", "赤峰市", "通辽市", "鄂尔多斯市", "呼伦贝尔市", "巴彦淖尔市", "乌兰察布市",
    "沈阳市", "大连市", "鞍山市", "抚顺市", "本溪市", "丹东市", "锦州市", "营口市", "阜新市", "辽阳市", "盘锦市", "铁岭市", "朝阳市", "葫芦岛市",
    "长春市", "吉林市", "四平市", "辽源市", "通化市", "白山市", "白城市", "松原市",
    "哈尔滨市", "齐齐哈尔市", "鸡西市", "鹤岗市", "双鸭山市", "大庆市", "伊春市", "佳木斯市", "七台河市", "牡丹江市", "黑河市", "绥化市",
    "南京市", "无锡市", "徐州市", "常州市", "苏州市", "南通市", "连云港市", "淮安市", "盐城市", "扬州市", "镇江市", "泰州市", "宿迁市",
    "杭州市", "宁波市", "温州市", "嘉兴市", "湖州市", "绍兴市", "金华市", "衢州市", "舟山市", "台州市", "丽水市",
    "合肥市", "芜湖市", "蚌埠市", "淮南市", "马鞍山市", "淮北市", "铜陵市", "安庆市", "黄山市", "滁州市", "阜阳市", "宿州市", "六安市", "亳州市", "池州市", "宣城市",
    "福州市", "厦门市", "莆田市", "三明市", "泉州市", "漳州市", "南平市", "龙岩市", "宁德市",
    "南昌市", "景德镇市", "萍乡市", "九江市", "新余市", "鹰潭市", "赣州市", "吉安市", "宜春市", "抚州市", "上饶市",
    "济南市", "青岛市", "淄博市", "枣庄市", "东营市", "烟台市", "潍坊市", "济宁市", "泰安市", "威海市", "日照市", "临沂市", "德州市", "聊城市", "滨州市", "菏泽市",
    "郑州市", "开封市", "洛阳市", "平顶山市", "安阳市", "鹤壁市", "新乡市", "焦作市", "濮阳市", "许昌市", "漯河市", "三门峡市", "南阳市", "商丘市", "信阳市", "周口市", "驻马店市",
    "武汉市", "黄石市", "十堰市", "宜昌市", "襄阳市", "鄂州市", "荆门市", "孝感市", "荆州市", "黄冈市", "咸宁市", "随州市",
    "长沙市", "株洲市", "湘潭市", "衡阳市", "邵阳市", "岳阳市", "常德市", "张家界市", "益阳市", "郴州市", "永州市", "怀化市", "娄底市",
    "广州市", "韶关市", "深圳市", "珠海市", "汕头市", "佛山市", "江门市", "湛江市", "茂名市", "肇庆市", "惠州市", "梅州市", "汕尾市", "河源市", "阳江市", "清远市", "东莞市", "中山市", "潮州市", "揭阳市", "云浮市",
    "南宁市", "柳州市", "桂林市", "梧州市", "北海市", "防城港市", "钦州市", "贵港市", "玉林市", "百色市", "贺州市", "河池市", "来宾市", "崇左市",
    "海口市", "三亚市", "三沙市", "儋州市",
    "成都市", "自贡市", "攀枝花市", "泸州市", "德阳市", "绵阳市", "广元市", "遂宁市", "内江市", "乐山市", "南充市", "眉山市", "宜宾市", "广安市", "达州市", "雅安市", "巴中市", "资阳市",
    "贵阳市", "六盘水市", "遵义市", "安顺市", "毕节市", "铜仁市",
    "昆明市", "曲靖市", "玉溪市", "保山市", "昭通市", "丽江市", "普洱市", "临沧市",
    "拉萨市", "日喀则市", "昌都市", "林芝市", "山南市", "那曲市",
    "西安市", "铜川市", "宝鸡市", "咸阳市", "渭南市", "延安市", "汉中市", "榆林市", "安康市", "商洛市",
    "兰州市", "嘉峪关市", "金昌市", "白银市", "天水市", "武威市", "张掖市", "平凉市", "酒泉市", "庆阳市", "定西市", "陇南市",
    "西宁市", "海东市",
    "银川市", "石嘴山市", "吴忠市", "固原市", "中卫市",
    "乌鲁木齐市", "克拉玛依市", "吐鲁番市", "哈密市",
    
    # 地区(7个)
    "大兴安岭地区", "阿里地区", 
    "喀什地区", "和田地区", "阿克苏地区", "塔城地区", "阿勒泰地区",
    
    # 自治州(30个)
    "延边朝鲜族自治州", 
    "恩施土家族苗族自治州", 
    "湘西土家族苗族自治州", 
    "凉山彝族自治州", "甘孜藏族自治州", "阿坝藏族羌族自治州", 
    "黔东南苗族侗族自治州", "黔南布依族苗族自治州", "黔西南布依族苗族自治州", 
    "楚雄彝族自治州", "红河哈尼族彝族自治州", "文山壮族苗族自治州", "西双版纳傣族自治州", 
    "大理白族自治州", "德宏傣族景颇族自治州", "怒江傈僳族自治州", "迪庆藏族自治州", 
    "临夏回族自治州", "甘南藏族自治州", 
    "海南藏族自治州", "海北藏族自治州", "海西蒙古族藏族自治州", 
    "黄南藏族自治州", "果洛藏族自治州", "玉树藏族自治州", 
    "昌吉回族自治州", "博尔塔拉蒙古自治州", "巴音郭楞蒙古自治州", 
    "克孜勒苏柯尔克孜自治州", "伊犁哈萨克自治州",
    
    # 盟(3个)
    "锡林郭勒盟", "阿拉善盟", "兴安盟"
]

# 用于存储所有店铺信息的列表
store_data = []

# 遍历城市列表并发送请求
for city in cities:
    # 更新请求的有效载荷
    data = {
        "keywords": city,
        "type": 2,
        "longitude": 121.48478650499,  # 当前位置坐标
        "latitude": 31.234214583401,  # 当前位置坐标
        "lang": "cn",
        "area": "",  # 如果 area 需要填值,可以在这里添加
    }

    # 发送 POST 请求
    response = requests.post(url, headers=headers, data=data)

    # 检查响应状态
    if response.status_code == 200:
        print(f"请求成功!城市: {city}")
        response_data = response.json()

        # 检查是否有数据
        if response_data.get('result') and response_data.get('data'):
            for store in response_data['data'].get('list', []):
                store_info = {
                    "store_id": store.get('store_id'),
                    "store_title": store.get('store_title'),
                    "store_address": store.get('store_address'),
                    "store_phone": store.get('store_phone'),
                    "business_hours": store.get('business_hours'),
                    "longitude": store.get('longitude'),
                    "latitude": store.get('latitude'),
                    "longitude1": store.get('longitude1'),
                    "latitude1": store.get('latitude1'),
                    "juli": store.get('juli'),
                    "videostatus": store.get('videostatus')
                }
                store_data.append(store_info)
        else:
            print(f"城市: {city} 没有数据,跳过。")
    else:
        print(f"请求失败,城市: {city},状态码:", response.status_code)
        print("响应内容:", response.text)

    # 增加延时,避免触发 API 限制
    time.sleep(2)  # 延时 2 秒

# 将数据存储到 CSV 文件
if store_data:
    df = pd.DataFrame(store_data)
    df.to_csv('store_data.csv', index=False, encoding='utf-8-sig')
    print("数据已成功存储到 store_data.csv")
else:
    print("没有获取到任何店铺数据。")

获取到的数据标签如下,store_id(店铺的唯一标识符)、store_title(店铺名称)、store_address(店铺地址)、store_phone( 店铺联系电话)、business_hours(营业时间)、longitude 和 latitude(店铺的经纬度)、longitude1 和 latitude1(请求时提供的经纬度)、juli: 距离(米);

第三步: 坐标系转换,这里我们需要把获取的门店地址进行坐标转换,其采用的坐标系是BD-09,因为当前坐标系是BD-09,我们可以通过coord-convert库实现BD-09转WGS84,需要批量转成WGS84/BD09的话可以用免费这个网站:批量转换工具:地图坐标系批量转换 - 免费在线工具 (latlongconverter.online)

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

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

小龙坎作为火锅餐饮行业的先锋,其在全国范围内构建的广泛门店网络显示了品牌的强劲影响力和市场渗透力。特别值得注意的是,小龙坎的门店主要集中在东部和中部地区,尤其是在经济较为发达的城市和地区

东部沿海地区 ,我们可以看到上海市、江苏省(包括南京、苏州等城市)以及浙江省(如杭州、宁波等地)拥有较多的小龙坎分店,这不仅体现了该品牌在这些地区的高受欢迎程度,也展示了其在经济发达区域的强大市场号召力。特别是上海和苏杭这样的文化与经济重镇,小龙坎在这里的存在感尤为突出

转向中部地区 ,四川省的成都市及其周边地区作为小龙坎的发源地,自然而然地成为了品牌最密集的分布区;而重庆市,这座被誉为"火锅之都"的城市,同样拥有大量的小龙坎门店。此外,湖北省的武汉市及周边地区也有不少的分店,显示出品牌在中部地区的扩展实力。成都和重庆作为火锅文化的摇篮,对小龙坎的发展起到了至关重要的作用

对于北部地区 而言,北京市的门店分布均匀,表明了小龙坎在北京市场占据了重要地位,并且河北省的石家庄等城市亦有分布,进一步说明了品牌向北扩展的成功。北京市场的稳定表现,为小龙坎在北方地区的布局打下了坚实的基础

南部地区 ,广东省的广州、深圳等大城市内小龙坎门店数量较多,福建省的福州、厦门等地也有覆盖,这反映了品牌在南方主要城市的影响力。广州和深圳作为中国南方的经济中心,是小龙坎展示其实力的重要舞台

西部地区 ,陕西省的西安市及其周边地区,以及云南省的昆明市等地也能找到小龙坎的身影,展现了品牌向西扩展的努力和成果。西安和昆明的加入,标志着小龙坎在全国范围内的战略布局更加完善

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

相关推荐
天天进步20153 分钟前
Python项目-基于Python的网络爬虫与数据可视化系统
爬虫·python·信息可视化
jonyleek6 分钟前
【JVS更新日志】低代码、规则引擎、智能BI、逻辑引擎3.26更新说明!
java·低代码·数据分析·团队开发·软件需求
qq_54702617924 分钟前
Elasticsearch DSL查询语法
大数据·elasticsearch·jenkins
qq_4369621833 分钟前
可直接套用的可视化模板
信息可视化·数据挖掘·数据分析
你觉得2051 小时前
山东大学:《DeepSeek应用与部署》|附PPT下载方法
大数据·人工智能·python·机器学习·ai·aigc·内容运营
IT从业者张某某3 小时前
Python数据可视化-第1章-数据可视化与matplotlib
python·信息可视化·matplotlib
Haibakeji3 小时前
海拔案例分享-新华书店新零售系统开发解决方案
大数据·运维
NEET_LH3 小时前
金融数据分析(MATLAB)个人学习笔记(5):金融实证分析实例
matlab·金融·数据分析
Aloudata4 小时前
平安证券 NoETL 指标平台实践:统一数据口径,驱动高效经营分析与智能决策
大数据·人工智能·数据分析·指标平台·noetl·chat bi
DataGear4 小时前
DataGear 5.3.0 制作支持导出表格数据的数据可视化看板
javascript·信息可视化·数据分析·html·echarts·数据可视化