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

HTML应用指南:利用GET请求获取全国盒马门店位置信息

随着新零售业态的发展,门店位置信息的获取变得至关重要。作为新零售领域的先锋,盒马鲜生不仅在商业模式创新上持续领先,还积极构建广泛的门店网络,以支持其不断增长的用户群体。本篇文章,我们将继续探究GET请求的实际应用,我们使用Python的requests库通过GET请求,从盒马鲜生官方网站获取门店位置信息,包括全国业态的盒马鲜生店、盒马X会员店、盒马邻里店、盒马奥莱店,通过解析构造请求、响应数据以及实现数据可视化,并通过可视化分析来展示盒马鲜生在我国的分布情况。

盒马鲜生官方网址:盒马

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

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

    负载:对于GET请求:负载通常包含了传递的参数,有些网页负载可能为空,或者没有负载,因为所有参数都通过URL传递;

    盒马就没有负载这一部分,那么为什么没有呢?

    根据 HTTP/1.1 的规范(RFC 7231),GET 请求不应包含请求体。虽然技术上可以在 GET 请求中包含请求体,但这并不符合规范,且大多数服务器和中间件不会处理 GET 请求中的请求体,也就是说HTTP 协议没有为 GET的请求体赋予语义,也就是即不要求也不禁止 GET 请求带请求体;

    前面的状态码提到了200 OK (从磁盘缓存)  又是什么意思?

    200 好理解,也就是 HTTP 状态码,表示请求已成功处理,那什么是从磁盘缓存?

     (从磁盘缓存) 缓存机制:这部分信息表明响应内容是从客户端的缓存中获取的,而不是直接从服务器获取的。缓存可以是浏览器的内存缓存或磁盘缓存。

    磁盘缓存:当浏览器访问某个资源时,它会将该资源存储在本地的磁盘缓存中,以便在后续请求中快速访问,而无需再次向服务器发送请求。这有助于提高加载速度和减少网络带宽的使用。

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

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

    方法思路

    1. 获取所有店铺列表的相关标签数据,另存为csv;
    2. 根据每个店铺地址信息查询地理坐标信息;
    3. 坐标转换,GCJ-02转WGS84;

    第一步:我们先找到对应数据存储位置,获取所有店铺列表,并根据标签进行保存,另存为csv;

    完整代码#运行环境 Python 3.11

    import requests
    import json
    import csvdef fetch_json_data():# 请求的 URLurl = 'https://hema-infra-center.oss-cn-zhangjiakou.aliyuncs.com/lnc/store.json'# 自定义请求头headers = {'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Mobile Safari/537.36 Edg/132.0.0.0'}try:# 发送 GET 请求response = requests.get(url, headers=headers)# 检查响应状态response.raise_for_status()  # 如果响应状态码不是 200,将引发异常# 解析 JSON 数据data = response.json()# 打开 CSV 文件以写入数据with open('store_data.csv', mode='w', newline='', encoding='utf-8') as csv_file:fieldnames = ['resourceName','address','city','county','province','bizStatus','bizStatusName','businessFormat','businessFormatName','role','roleName']writer = csv.DictWriter(csv_file, fieldnames=fieldnames)writer.writeheader()  # 写入表头# 遍历 data 列表for item in data.get("data", []):  # 从 JSON 中提取 "data" 字段writer.writerow({'resourceName': item.get("resourceName"),'address': item.get("address"),'city': item.get("city"),'county': item.get("county"),'province': item.get("province"),'bizStatus': item.get("bizStatus"),'bizStatusName': item.get("bizStatusName"),'businessFormat': item.get("businessFormat"),'businessFormatName': item.get("businessFormatName"),'role': item.get("role"),'roleName': item.get("roleName")})print("数据已成功保存到 store_data.csv")except requests.exceptions.RequestException as e:print(f"请求错误: {e}")if __name__ == "__main__":fetch_json_data()

    这里我们已经拿到了所有门店的标签数据和门店地址信息,包括地址(address)、业务状态(bizStatus)表示商店的运营状态,通常用数字表示,而业务状态名称(bizStatusName)则是其中文描述,如“正常”表示商店正常运营。业务格式(businessFormat)指商店的经营模式或类型,简写为“ALZK”,而业务格式名称(businessFormatName)则是其中文描述,例如“奥莱折扣”。城市ID(cityId)、区县(county)、省份(province),这里解释一下role标签中的NB,意为Neighbour Business(社邻商业)也就是盒马邻里,Fresh也就是盒马鲜生;

    第二步部分:坐标系转换,因为数据用的是高德坐标系(GCJ02),我们需要把转换成wgs84坐标系在argis上展示才不会偏移,我们把csv的坐标列手动分列一下,并把坐标从高德坐标系(GCJ02)转到WGS84,具体实现方法可以参考我这篇文章:地址转坐标:利用高德API进行批量地理编码_高德地图api-CSDN博客;

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

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

    从图中我们可以看到盒马门店的主要集中区域:盒马门店主要集中在上海及其周边地区,包括苏州、嘉兴等城市。这表明盒马在这些城市的市场渗透率较高,在大城市(如上海)中,门店分布较为密集,可能是因为这些地区的人口密度高,消费能力强,适合盒马的商业模式。

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

    相关文章:

    HTML应用指南:利用GET请求获取全国盒马门店位置信息

    随着新零售业态的发展,门店位置信息的获取变得至关重要。作为新零售领域的先锋,盒马鲜生不仅在商业模式创新上持续领先,还积极构建广泛的门店网络,以支持其不断增长的用户群体。本篇文章,我们将继续探究GET请求的实际应…...

    MongoDB 深度教程:当 NoSQL 遇上幽默

    MongoDB 深度教程:当 NoSQL 遇上幽默 欢迎来到这个 MongoDB 的奇妙冒险!如果你已经了解了 MongoDB 的基础知识,比如 CRUD 操作、数据库和集合的概念,但总觉得自己只是停留在门口徘徊,那么今天这篇教程就是为你量身定做…...

    windows安装linux子系统【ubuntu】操作步骤

    1.在windows系统中开启【适用于Linux的Windows子系统】 控制面板—程序—程序和功能—启用或关闭Windows功能—勾选适用于Linux的Windows子系统–确定 2.下载安装Linux Ubuntu 22.04.5 LTS系统 Ununtu下载链接 3.安装完Ununtu系统后更新系统 sudo apt update4.进入/usr/l…...

    通过k8s请求selfsubjectrulesreviews查询权限

    当前是通过kubelet进行查询 curl --cacert /etc/kubernetes/pki/ca.crt \ --cert /var/lib/kubelet/pki/kubelet-client-current.pem \ --key /var/lib/kubelet/pki/kubelet-client-current.pem \ -d - \ -H "Content-Type: application/json" \ -H Accept: applicat…...

    如何参与开源项目

    目的 就是说一下如何参与开源的项目,通过参与QXlsx来说明开源项目是如何参与的,其它的github上的开源项目,也是这样的流程。 关于GitHub: GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行…...

    Java 大视界 -- Java 大数据在智能金融监管中的应用与实践(77)

    💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...

    使用deepseek快速创作ppt

    目录 1.在DeekSeek生成PPT脚本2.打开Kimi3.最终效果 DeepSeek作为目前最强大模型,其推理能力炸裂,但是DeepSeek官方没有提供生成PPT功能,如果让DeepSeek做PPT呢? 有个途径:在DeepSeek让其深度思考做出PPT脚本&#xf…...

    如何在Python中创建和访问列表

    在Python中,列表(list)是一种用于存储一系列有序项目的数据结构。这些项目可以是不同类型的,比如整数、浮点数、字符串,甚至是其他列表(形成嵌套列表)。以下是如何在Python中创建和访问列表的基…...

    多线程下jdk1.7的头插法导致的死循环问题

    20250208 多线程下jdk1.7的头插法导致的死循环问题 多线程下jdk1.7的头插法导致的死循环问题 【新版Java面试专题视频教程,java八股文面试全套真题深度详解(含大厂高频面试真题)】 jdk1.7在hashmap扩容时使用的是头插法,所以扩容…...

    低代码系统-插件功能分析( 某道云)

    本文主要把其的插件进行了简单分析,不做业务上的梳理,不做推荐。 可大致分为: 群机器人 信息查询 智能识别 实名验证类 数据库类 通知类 通知类 aPaas增强 考勤同步 财务类 类别 插件名称 功能简介 群机器人类 某钉机器人 即在表单处完…...

    手搓基于CNN的Chest X-ray图像分类

    数据集Chest X-ray PD Dataset 数据集介绍 - 知乎https://zhuanlan.zhihu.com/p/661311561 CPU版本 import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import Dataset, DataLoader from torchvision import transforms, models import …...

    Golang 并发机制-7:sync.Once实战应用指南

    Go的并发模型是其突出的特性之一,但强大的功能也带来了巨大的责任。sync.Once是由Go的sync包提供的同步原语。它的目的是确保一段代码只执行一次,而不管有多少协程试图执行它。这听起来可能很简单,但它改变了并发环境中管理一次性操作的规则。…...

    java nio 底层使用的是select 、poll还是epoll

    在 Java NIO 中,底层使用的 I/O 多路复用机制取决于操作系统和 JDK 的实现。 🚀 Java NIO 底层使用机制概述 操作系统默认多路复用机制系统调用Linuxepollepoll_create、epoll_ctl、epoll_waitWindowsselect 或 WSAPollselect() 或 WSAPoll()macOS / B…...

    Kotlin协程详解——协程取消与超时

    目录 一、协程取消 1.取消协程的执行 2.使计算代码可取消 3.在finally中释放资源 4.运行不能取消的代码块 二、协程超时 异步超时与资源管理 一、协程取消 1.取消协程的执行 在一个长时间运行的应用程序中,你也许需要对你的后台协程进行细粒度的控制。 比如…...

    双向链表、内核链表和gdb(20250208)

    单向链表 节点 数据域 指针域(后继节点) 双向链表 相比于单项指针,双向指针存有前驱节点的地址,使链表的灵活性更高。 内核链表 在内核中 offsetof:获取结构体某个成员到结构体开头的偏移量container_of:根据结…...

    全程Kali linux---CTFshow misc入门(38-50)

    第三十八题: ctfshow{48b722b570c603ef58cc0b83bbf7680d} 第三十九题: 37换成1,36换成0,就得到长度为287的二进制字符串,因为不能被8整除所以,考虑每7位转换一个字符,得到flag。 ctfshow{5281…...

    MySQL 8.0.41安装教程(2025年2月8号)

    下载网址:https://www.mysql.com/cn/downloads/ 点击 我选择的是第二个离线安装 点击之后,选择直接下载: 下载完成双击: 我选择的是自定义安装: 右边默认已经存在我选择的8.0.41 点击红框中的,自定义安装路…...

    【自学笔记】Deepseek的基础知识点总览-持续更新

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Deepseek知识点总览一、Deepseek简介二、Deepseek的三大适用模式1. 基础模型(V3)2. 深度思考(R1)3. 联网搜索模式 三…...

    10N10-ASEMI中低压N沟道MOS管10N10

    编辑:ll 10N10-ASEMI中低压N沟道MOS管10N10 型号:10N10 品牌:ASEMI 封装:TO-252 最大漏源电流:10A 漏源击穿电压:100V 批号:最新 RDS(ON)Max:135mΩ …...

    2025年2月8日(Adafruit_PCA9685详细使用)

    Adafruit_PCA9685 是一个 Python 模块,用于与 PCA9685 驱动芯片进行通信,该芯片常用于控制多个伺服电机。PCA9685 是一个 16 通道的 PWM(脉宽调制)驱动器,常用于需要精确控制多个伺服电机的应用。 以下是详细的使用方…...

    MR30分布式IO模块:驱动智能制造工厂的工业互联与高效控制新范式

    在工业4.0与智能制造浪潮的推动下,传统制造业正经历着从“机械驱动”向“数据驱动”的深刻转型。作为工业数据连接领域的领军者,明达技术凭借其自主研发的MR30分布式IO模块,以创新的技术架构与卓越的性能表现,为全球制造企业构建了…...

    Reqable使用实践

    一、背景 日常开发中,难免要抓取请求数据,查看接口数据,从而更好定位问题,基于这个原因,查找了一些抓包工具,例如: HttpCanary、 Steam 、Fiddler等,不是要钱,就是只对苹…...

    数据可视化基本套路总结

    首先从维基百科上搬出数据可视化的概念: 数据可视化是关于数据之视觉表现形式的研究;其中,这种数据的视觉表现形式被定义为一种以某种概要形式抽提出来的信息,包括相应信息单位的各种属性和变量。 用人话简单来说,数据…...

    TensorFlow域对抗训练DANN神经网络分析MNIST与Blobs数据集梯度反转层提升目标域适应能力可视化...

    全文链接:https://tecdat.cn/?p39656 本文围绕基于TensorFlow实现的神经网络对抗训练域适应方法展开研究。详细介绍了梯度反转层的原理与实现,通过MNIST和Blobs等数据集进行实验,对比了不同训练方式(仅源域训练、域对抗训练等&am…...

    DNS劫持和HTTPDNS

    DNS 劫持是一种网络攻击手段,攻击者通过篡改域名系统(DNS)解析过程,将用户请求的域名重定向到恶意网站或其他不正确的地址。这种攻击可以用于多种目的,例如窃取用户数据、传播恶意软件或进行钓鱼攻击。 举个例子 假设…...

    云原生微服务

    能够认识到云原生微服务对应用程序设计的影响,描述无状态微服务,并比较单体和微服务架构。要充分利用运营模式,您需要以不同的方式思考应用程序设计。您需要考虑云原生微服务。此图像显示了一个应用程序,该应用程序被设计为小型微…...

    【deepSeek R1】Ollama 更改模型安装位置 以及应用安装位置

    【deepSeek R1】Ollama 更改模型安装位置 以及应用安装位置 本地版部署deepSeek R1 可以参考文章 3分钟教你搭建属于自己的本地大模型 DeepSeek R1 Ollama 是一个开源工具,旨在帮助用户轻松在本地计算机上运行、部署和管理大型语言模型(LLMs)…...

    windows + visual studio 2019 使用cmake 编译构建静、动态库并调用详解

    环境 windows visual studio 2019 visual studio 2019创建cmake工程 1. 静态库.lib 1.1 静态库编译生成 以下是我创建的cmake工程文件结构,只关注高亮文件夹部分 libout 存放编译生成的.lib文件libsrc 存放编译用的源代码和头文件CMakeLists.txt 此次编译CMak…...

    使用Feign代替RestTemplet

    Feign RestTemplet存在的问题 String url "http: //userservice/user/" order.getUserId(); User user restTemplate.getFor0bject(url, User.class);可读性差参数复杂URL难以维护 Feign声明式的Http客户端,官方地址:https://github.com…...

    苹果笔记本安装jmeter

    下载并安装jmeter即可,jmeter官网下载地址:Apache JMeter - Download Apache JMeter 参考以下文章:“https://blog.csdn.net/weixin_51664828/article/details/145008755”...

    设备通过国标GB28181接入EasyCVR,显示在线但视频无法播放的原因排查

    安防监控EasyCVR平台支持多种视频源接入,包括但不限于IP摄像头、NVR、编码器、流媒体服务器等。平台采用高效的视频流接入技术,支持大规模视频流的并发接入,确保视频流的稳定性和流畅性。 有用户反馈,项目现场使用国标GB28181接入…...

    为什么我喜欢在 CSS 中使用 RegEx

    说到正则(RegEx),我们第一反应往往是“在编程中用来匹配或验证字符串”,比如做表单验证。但其实在 CSS 中,也能用到与正则类似的选择器特性,为我们的样式管理带来诸多便利。别怀疑,以下就是如何…...

    深度剖析 Redisson 分布式锁:原理、实现与应用实践

    文章目录 写在文章开头详解Redisson 分布式锁使用和实现前置准备工作分布式锁的基本使用公平锁的使用联锁的使用读写锁基本使用常见问题Redisson和Jedis有什么区别redisson如何实现分布式锁redisson如何实现分布式锁的可重入redisson如何实现公平锁Redisson的watchdog机制是什么…...

    今日AI和商界事件(2025-02-08)

    今日AI领域的重大事件主要包括以下几个方面: 一、DeepSeek引发的行业震动 事件概述:DeepSeek作为近期崛起的AI模型,以其低成本、高性能的推理能力引发了广泛关注。其开源策略、独特的出身以及强大的算力表现,使得微软、英伟达等…...

    Mac 基于Ollama 本地部署DeepSeek离线模型

    最近节日期间最火的除了《哪吒》就是deepseek了,毕竟又让西方各个层面都瑟瑟发抖的产品。DeepSeek凭借其强大的AI能力真的是在全球多个领域展现出强大的影响力。由于受到外部势力的恶意攻击倒是deepseek官方服务不稳定,国内其他厂家的适配版本也不是很稳…...

    Python截图轻量化工具

    这是用Python做到截图工具,不过由于使用了ctypes调用了Windows的API, 同时访问了Windows中"C:/Windows/Cursors/"中的.cur光标样式文件, 这个工具只适用于Windows环境; 如果要提升其跨平台性的话,需要考虑替换ctypes的一些专属于W…...

    怎麼在Chrome中設置代理伺服器?

    出於隱私、安全或者訪問特定網路資源的需求,設置代理伺服器顯得尤為重要。本文將詳細介紹如何在Chrome流覽器中進行代理伺服器的設置。 代理伺服器是介於電腦和互聯網之間的一道“中間牆”。幫助間接訪問互聯網資源,這樣實際的IP地址被代理伺服器的IP地…...

    【数据结构中链表常用的方法实现过程】

    线性表 线性表包括:顺序表、链表、栈,队列等,本节我们先学习顺序表。 顺序表 利用新的数据类型——顺序表,操作数组 顺序表的本质就是对数组的增删改查。 /*** 打印顺序表中的所有元素*/Overridepublic void display() {for (int i 0; i…...

    语言月赛 202308【小粉兔处理题解审核志愿者轮换】题解(AC)

    》》》点我查看「视频」详解》》》 [语言月赛 202308] 小粉兔处理题解审核志愿者轮换 题目背景 又到了一周的周日,扶苏又像催命一样开始催促小粉兔处理题解审核志愿者的轮换。但是懒狗小粉兔总是把这项工作拖到第二天凌晨。 【这里有一张内部群聊图,…...

    第二十二章:游戏结缘与现实的相遇

    “终于结束了……” 小冷的手微微颤抖,笔在纸上划过,签下放弃 985 高校研究生入学资格的名字,那一刻,数月来压在心头沉甸甸的巨石轰然崩塌,扬起的尘埃渐渐消散。曾经,学术巅峰犹如夜空中遥不可及却又熠熠生…...

    (ICLR=2025)生成的表征对齐:训练扩散Transformer比你想象的更简单

    生成的表征对齐:训练扩散Transformer比你想象的更简单 paper是KAIST发表在ICLR 2025的工作 paper title:REPRESENTATION ALIGNMENT FOR GENERATION: TRAINING DIFFUSION TRANSFORMERS IS EASIER THAN YOU THINK Code:链接 ABSTRACT 最近的研究表明&…...

    保姆级教程--DeepSeek部署

    以DeepSeek-R1或其他类似模型为例,涵盖环境配置、代码部署和运行测试的全流程: 准备工作 1. 注册 Cloud Studio - 访问 [Cloud Studio 官网](https://cloudstudio.net/),使用腾讯云账号登录。 - 完成实名认证(如需长期使用…...

    [css] 黑白主题切换

    link动态引入 类名切换 css滤镜 var 类名切换 v-bind css预处理器mixin类名切换 【前端知识分享】CSS主题切换方案...

    C语言练习题

    文章目录 1. 递归实现将字符串str中的元素逆序2. 对数组arr进行冒泡排序(升序)3. 对数组从下标low到下标hihg区间内的元素进行快速排序(升序)4. 在数组中利用二分查找(折半查找)目标关键字5. 求n的阶乘6. 判断year是否为闰年7. 求…...

    Lambda 表达式

    一、Lambda 表达式简介 Lambda 表达式是一种简洁的函数式编程方式,用于实现只有一个方法的接口(例如函数式接口)。 基本语法 (parameters) -> expression (parameters) -> { statements; } 参数:可以有零个或多个参数。…...

    Vue 鼠标事件合集,关于鼠标右键的处理方法(改写鼠标右键方法、自定义鼠标右键)

    鼠标事件使用 mousedown"canvasDown($event)"按下事件合集 click 点击某个对象时触发 mousedown 鼠标按钮被按下时触发 mouseup 鼠标按钮被松开时触发 mouseleave 当鼠标指针移出元素时触发 dblclick 双击时触发 mousemove 鼠标移动时触发&#xff0c…...

    go语言中的接口

    接口简介 现实生活中的接口 现实生活中手机、相机、U 盘都可以和电脑的 USB 接口建立连接。我们不需要关注 usb 卡槽大小是否一样,因为所有的 USB 接口都是按照统一的标准来设计的。 Golang 中的接口(interface) Golang 中的接口是一种抽象…...

    如何在Android Studio中开发一个简单的Android应用?

    Android Studio是开发Android应用的官方集成开发环境(IDE),它提供了许多强大的功能,使得开发者能够高效地创建Android应用。如果你是Android开发的初学者,本文将引导你如何在Android Studio中开发一个简单的Android应用…...

    启明星辰发布MAF大模型应用防火墙产品,提升DeepSeek类企业用户安全

    2月7日,启明星辰面向DeepSeek等企业级大模型业务服务者提供的安全防护产品——天清MAF(Model Application Firewall)大模型应用防火墙产品正式发布。 一个新赛道将被开启…… DeepSeek的低成本引爆赛道规模 随着DeepSeek成为当前最热的现象级…...

    开箱即用的.NET MAUI组件库 V-Control 发布了!

    之前写过挺多的MAUI Sample,其中有很多代码可以打包成组件,当组件完善到一定程度,我会把控件封装起来放到控件库中。 今天,在这个仓库建立一年零八个月后,我觉得可以考虑将其作为开源库发布。 有很多网友在观望.NET …...