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

打印 上一主题 下一主题

主题 1674|帖子 1674|积分 5022

随着新零售业态的快速发展,门店位置信息的获取变得越来越紧张。作为暖锅餐饮行业的前锋,小龙坎不仅在服务质量上持续领先,还积极构建广泛的门店网络,以支持其不停增长的用户群体。为了更好地理解和利用这些数据,本篇文章将深入探讨POST哀求的实际应用,并展示怎样通过Python的requests库发送POST哀求,从小龙坎官方网站获取详细的门店位置信息,包罗全国范围内的全部小龙坎餐厅以及其他相干服务点。本文将详细介绍怎样剖析构造哀求、处置惩罚相应数据,并实现数据可视化,我们把全国的门店举行数据获取和可视化。
小龙坎官方网址:小龙坎暖锅【官网】-成都着名暖锅-四川特色暖锅-门店查询
  第一步:先找到门店数据的存储位置,然后看3个关键部门标头、负载、 预览;
标头:通常包罗URL的毗连,也就是目标资源的位置;

负载:对于POST哀求:负载通常包含了传递的参数,这里我们可以看到它的传参包罗,都会名称和当前坐标,照旧明文,没有举行加密;

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


接下来就是数据获取部门,先讲一下方法思绪,一共四个步调;
方法思绪

  • 找到对应数据存储位置,获取全部店肆列表的相干标签数据;
  • 我们通过改变查询关键字(地级市名称),来遍历全国门店数据;
  • 坐标转换,通过coord-convert库实现BD-09转WGS84;
  • 点数据在arcgis上举行可视化;
第一步:我们先找到对应数据存储位置,获取全部店肆列表,我们从预览可知上海一共7家;

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

第二步:利用POST哀求获取全部地级行政区的店肆列表,并根据标签举行保存,另存为csv;
完备代码#运行环境 Python 3.11
  1. import requests
  2. import pandas as pd
  3. import time
  4. # 请求的 URL
  5. url = "https://www.xiaolongkan.com/apistore.html"
  6. # 请求的头部
  7. headers = {
  8.     "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",
  9. }
  10. # 城市列表
  11. cities = [
  12.     "上海市", "北京市", "天津市", "重庆市",
  13.     # 地级市(293个)
  14.     "石家庄市", "唐山市", "秦皇岛市", "邯郸市", "邢台市", "保定市", "张家口市", "承德市", "沧州市", "廊坊市", "衡水市",
  15.     "太原市", "大同市", "阳泉市", "长治市", "晋城市", "朔州市", "晋中市", "运城市", "忻州市", "临汾市", "吕梁市",
  16.     "呼和浩特市", "包头市", "乌海市", "赤峰市", "通辽市", "鄂尔多斯市", "呼伦贝尔市", "巴彦淖尔市", "乌兰察布市",
  17.     "沈阳市", "大连市", "鞍山市", "抚顺市", "本溪市", "丹东市", "锦州市", "营口市", "阜新市", "辽阳市", "盘锦市", "铁岭市", "朝阳市", "葫芦岛市",
  18.     "长春市", "吉林市", "四平市", "辽源市", "通化市", "白山市", "白城市", "松原市",
  19.     "哈尔滨市", "齐齐哈尔市", "鸡西市", "鹤岗市", "双鸭山市", "大庆市", "伊春市", "佳木斯市", "七台河市", "牡丹江市", "黑河市", "绥化市",
  20.     "南京市", "无锡市", "徐州市", "常州市", "苏州市", "南通市", "连云港市", "淮安市", "盐城市", "扬州市", "镇江市", "泰州市", "宿迁市",
  21.     "杭州市", "宁波市", "温州市", "嘉兴市", "湖州市", "绍兴市", "金华市", "衢州市", "舟山市", "台州市", "丽水市",
  22.     "合肥市", "芜湖市", "蚌埠市", "淮南市", "马鞍山市", "淮北市", "铜陵市", "安庆市", "黄山市", "滁州市", "阜阳市", "宿州市", "六安市", "亳州市", "池州市", "宣城市",
  23.     "福州市", "厦门市", "莆田市", "三明市", "泉州市", "漳州市", "南平市", "龙岩市", "宁德市",
  24.     "南昌市", "景德镇市", "萍乡市", "九江市", "新余市", "鹰潭市", "赣州市", "吉安市", "宜春市", "抚州市", "上饶市",
  25.     "济南市", "青岛市", "淄博市", "枣庄市", "东营市", "烟台市", "潍坊市", "济宁市", "泰安市", "威海市", "日照市", "临沂市", "德州市", "聊城市", "滨州市", "菏泽市",
  26.     "郑州市", "开封市", "洛阳市", "平顶山市", "安阳市", "鹤壁市", "新乡市", "焦作市", "濮阳市", "许昌市", "漯河市", "三门峡市", "南阳市", "商丘市", "信阳市", "周口市", "驻马店市",
  27.     "武汉市", "黄石市", "十堰市", "宜昌市", "襄阳市", "鄂州市", "荆门市", "孝感市", "荆州市", "黄冈市", "咸宁市", "随州市",
  28.     "长沙市", "株洲市", "湘潭市", "衡阳市", "邵阳市", "岳阳市", "常德市", "张家界市", "益阳市", "郴州市", "永州市", "怀化市", "娄底市",
  29.     "广州市", "韶关市", "深圳市", "珠海市", "汕头市", "佛山市", "江门市", "湛江市", "茂名市", "肇庆市", "惠州市", "梅州市", "汕尾市", "河源市", "阳江市", "清远市", "东莞市", "中山市", "潮州市", "揭阳市", "云浮市",
  30.     "南宁市", "柳州市", "桂林市", "梧州市", "北海市", "防城港市", "钦州市", "贵港市", "玉林市", "百色市", "贺州市", "河池市", "来宾市", "崇左市",
  31.     "海口市", "三亚市", "三沙市", "儋州市",
  32.     "成都市", "自贡市", "攀枝花市", "泸州市", "德阳市", "绵阳市", "广元市", "遂宁市", "内江市", "乐山市", "南充市", "眉山市", "宜宾市", "广安市", "达州市", "雅安市", "巴中市", "资阳市",
  33.     "贵阳市", "六盘水市", "遵义市", "安顺市", "毕节市", "铜仁市",
  34.     "昆明市", "曲靖市", "玉溪市", "保山市", "昭通市", "丽江市", "普洱市", "临沧市",
  35.     "拉萨市", "日喀则市", "昌都市", "林芝市", "山南市", "那曲市",
  36.     "西安市", "铜川市", "宝鸡市", "咸阳市", "渭南市", "延安市", "汉中市", "榆林市", "安康市", "商洛市",
  37.     "兰州市", "嘉峪关市", "金昌市", "白银市", "天水市", "武威市", "张掖市", "平凉市", "酒泉市", "庆阳市", "定西市", "陇南市",
  38.     "西宁市", "海东市",
  39.     "银川市", "石嘴山市", "吴忠市", "固原市", "中卫市",
  40.     "乌鲁木齐市", "克拉玛依市", "吐鲁番市", "哈密市",
  41.    
  42.     # 地区(7个)
  43.     "大兴安岭地区", "阿里地区",
  44.     "喀什地区", "和田地区", "阿克苏地区", "塔城地区", "阿勒泰地区",
  45.    
  46.     # 自治州(30个)
  47.     "延边朝鲜族自治州",
  48.     "恩施土家族苗族自治州",
  49.     "湘西土家族苗族自治州",
  50.     "凉山彝族自治州", "甘孜藏族自治州", "阿坝藏族羌族自治州",
  51.     "黔东南苗族侗族自治州", "黔南布依族苗族自治州", "黔西南布依族苗族自治州",
  52.     "楚雄彝族自治州", "红河哈尼族彝族自治州", "文山壮族苗族自治州", "西双版纳傣族自治州",
  53.     "大理白族自治州", "德宏傣族景颇族自治州", "怒江傈僳族自治州", "迪庆藏族自治州",
  54.     "临夏回族自治州", "甘南藏族自治州",
  55.     "海南藏族自治州", "海北藏族自治州", "海西蒙古族藏族自治州",
  56.     "黄南藏族自治州", "果洛藏族自治州", "玉树藏族自治州",
  57.     "昌吉回族自治州", "博尔塔拉蒙古自治州", "巴音郭楞蒙古自治州",
  58.     "克孜勒苏柯尔克孜自治州", "伊犁哈萨克自治州",
  59.    
  60.     # 盟(3个)
  61.     "锡林郭勒盟", "阿拉善盟", "兴安盟"
  62. ]
  63. # 用于存储所有店铺信息的列表
  64. store_data = []
  65. # 遍历城市列表并发送请求
  66. for city in cities:
  67.     # 更新请求的有效载荷
  68.     data = {
  69.         "keywords": city,
  70.         "type": 2,
  71.         "longitude": 121.48478650499,  # 当前位置坐标
  72.         "latitude": 31.234214583401,  # 当前位置坐标
  73.         "lang": "cn",
  74.         "area": "",  # 如果 area 需要填值,可以在这里添加
  75.     }
  76.     # 发送 POST 请求
  77.     response = requests.post(url, headers=headers, data=data)
  78.     # 检查响应状态
  79.     if response.status_code == 200:
  80.         print(f"请求成功!城市: {city}")
  81.         response_data = response.json()
  82.         # 检查是否有数据
  83.         if response_data.get('result') and response_data.get('data'):
  84.             for store in response_data['data'].get('list', []):
  85.                 store_info = {
  86.                     "store_id": store.get('store_id'),
  87.                     "store_title": store.get('store_title'),
  88.                     "store_address": store.get('store_address'),
  89.                     "store_phone": store.get('store_phone'),
  90.                     "business_hours": store.get('business_hours'),
  91.                     "longitude": store.get('longitude'),
  92.                     "latitude": store.get('latitude'),
  93.                     "longitude1": store.get('longitude1'),
  94.                     "latitude1": store.get('latitude1'),
  95.                     "juli": store.get('juli'),
  96.                     "videostatus": store.get('videostatus')
  97.                 }
  98.                 store_data.append(store_info)
  99.         else:
  100.             print(f"城市: {city} 没有数据,跳过。")
  101.     else:
  102.         print(f"请求失败,城市: {city},状态码:", response.status_code)
  103.         print("响应内容:", response.text)
  104.     # 增加延时,避免触发 API 限制
  105.     time.sleep(2)  # 延时 2 秒
  106. # 将数据存储到 CSV 文件
  107. if store_data:
  108.     df = pd.DataFrame(store_data)
  109.     df.to_csv('store_data.csv', index=False, encoding='utf-8-sig')
  110.     print("数据已成功存储到 store_data.csv")
  111. else:
  112.     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举行可视化,可以看到小龙坎门店在空间上的分布情况;

接下来,我们举行看图说话:
小龙坎作为暖锅餐饮行业的前锋,其在全国范围内构建的广泛门店网络显示了品牌的强劲影响力和市场渗透力。特殊值得注意的是,小龙坎的门店紧张集中在东部和中部地区,尤其是在经济较为发达的都会和地区
东部沿海地区,我们可以看到上海市、江苏省(包罗南京、苏州等都会)以及浙江省(如杭州、宁波等地)拥有较多的小龙坎分店,这不仅体现了该品牌在这些地区的高受欢迎程度,也展示了其在经济发达区域的强盛市场号召力。特殊是上海和苏杭这样的文化与经济重镇,小龙坎在这里的存在感尤为突出
转向中部地区,四川省的成都市及其周边地区作为小龙坎的发源地,自然而然地成为了品牌最密集的分布区;而重庆市,这座被誉为“暖锅之都”的都会,同样拥有大量的小龙坎门店。别的,湖北省的武汉市及周边地区也有不少的分店,显示出品牌在中部地区的扩展实力。成都和重庆作为暖锅文化的摇篮,对小龙坎的发展起到了至关紧张的作用
对于北部地区而言,北京市的门店分布匀称,表明确小龙坎在北京市场占据了紧张地位,并且河北省的石家庄等都会亦有分布,进一步说明确品牌向北扩展的成功。北京市场的稳定体现,为小龙坎在北方地区的布局打下了坚实的基础
南部地区,广东省的广州、深圳等大都会内小龙坎门店数量较多,福建省的福州、厦门等地也有覆盖,这反映了品牌在南方紧张都会的影响力。广州和深圳作为中国南方的经济中央,是小龙坎展示实在力的紧张舞台
西部地区,陕西省的西安市及其周边地区,以及云南省的昆明市等地也能找到小龙坎的身影,展现了品牌向西扩展的积极和成果。西安和昆明的加入,标志取小龙坎在全国范围内的战略布局更加美满

文章仅用于分享个人学习成果与个人存档之用,分享知识,如有侵权,请接洽作者举行删除。全部信息均基于作者的个人理解和履历,不代表任何官方态度或权势巨子解读。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大连密封材料

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表