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 csv
    
    def fetch_json_data():
        # 请求的 URL
        url = '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进行可视化,可以看到盒马门店在空间上的分布情况;

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

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

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包

    打赏作者

    图说交通

    买猫粮,楼下的流浪猫在等我

    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
    扫码支付:¥1
    获取中
    扫码支付

    您的余额不足,请更换扫码支付或充值

    打赏作者

    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值