微店平台关键字搜索接口深度解析:从 Token 动态生成到多维度数据挖掘

news/2025/11/21 17:27:31/文章来源:https://www.cnblogs.com/API-19970108110/p/19253853
微店作为国内知名的移动电商平台,其搜索接口采用了独特的认证机制和数据返回格式。本文将从接口的认证原理、参数构造、数据解析等方面进行详细分析,并提供完整的 Python 代码实现,帮助开发者快速对接微店搜索接口,实现高效的数据采集和分析。
一、接口认证机制分析

微店搜索接口采用 Token + 签名 的认证方式,核心认证流程如下:

    Token 获取:通过微店开放平台获取 app_key 和 app_secret,然后调用令牌获取接口生成 access_token。
    签名生成:每次请求时,需要根据请求参数、access_token 和 app_secret 生成签名。
    接口调用:在请求头中携带 access_token 和签名,进行接口调用。

关键认证参数
参数    说明    位置
app_key    应用 ID    请求参数
app_secret    应用密钥    签名生成
access_token    访问令牌    请求头 Authorization: Bearer {token}
sign    签名    请求参数
timestamp    时间戳    请求参数
nonce    随机数    请求参数
二、签名生成算法

签名生成是接口认证的核心,具体步骤如下:

    将请求参数(不包括 sign)按照字母顺序排序。
    将排序后的参数名和参数值拼接成字符串。
    在字符串末尾拼接 app_secret。
    对拼接后的字符串进行 MD5 加密,得到签名。

python

运行

    import hashlib
    import time
    import random
     
    def generate_sign(params, app_secret):
        # 排序参数
        sorted_params = sorted(params.items(), key=lambda x: x[0])
        # 拼接参数
        sign_str = ''.join([f"{k}{v}" for k, v in sorted_params])
        # 拼接app_secret
        sign_str += app_secret
        # MD5加密
        sign = hashlib.md5(sign_str.encode()).hexdigest().upper()
        return sign

三、接口调用流程

以 关键字搜索接口(v1/goods/search)为例,完整调用流程如下:
1. 获取访问令牌

python

运行

    def get_access_token(app_key, app_secret):
        url = "https://open.weidian.com/oauth2/token"
        params = {
            "app_key": app_key,
            "app_secret": app_secret,
            "grant_type": "client_credentials"
        }
        response = requests.post(url, params=params)
        result = response.json()
        return result.get("access_token")

2. 构造请求参数并生成签名

python

运行

    def build_request_params(keyword, page, page_size, app_key, access_token, app_secret):
        params = {
            "app_key": app_key,
            "access_token": access_token,
            "keyword": keyword,
            "page": page,
            "page_size": page_size,
            "timestamp": int(time.time()),
            "nonce": random.randint(100000, 999999)
        }
        # 生成签名
        params["sign"] = generate_sign(params, app_secret)
        return params

3. 调用搜索接口

python

运行

    def search_goods(keyword, page=1, page_size=20):
        app_key = "your_app_key"
        app_secret = "your_app_secret"
        # 获取access_token
        access_token = get_access_token(app_key, app_secret)
        # 构造请求参数
        params = build_request_params(keyword, page, page_size, app_key, access_token, app_secret)
        # 发送请求
        url = "https://open.weidian.com/api/v1/goods/search"
        headers = {
            "Content-Type": "application/x-www-form-urlencoded"
        }
        response = requests.post(url, data=params, headers=headers)
        return response.json()

四、数据解析与处理

接口返回的数据包含商品的基本信息、价格、销量、店铺信息等,需要进行解析和清洗:

python

运行

    def parse_search_result(raw_data):
        goods_list = []
        if raw_data.get("code") == 0 and raw_data.get("data"):
            for item in raw_data["data"].get("list", []):
                goods_info = {
                    "goods_id": item.get("goods_id"),
                    "goods_name": item.get("goods_name"),
                    "price": item.get("price") / 100,  # 分转元
                    "sales_count": item.get("sales_count"),
                    "shop_id": item.get("shop_id"),
                    "shop_name": item.get("shop_name"),
                    "main_image": item.get("main_image")
                }
                goods_list.append(goods_info)
        return goods_list

五、多维度数据挖掘

通过搜索接口获取商品数据后,可以进行多维度的数据分析,例如:

    销量分析:统计不同价格区间、不同类别的商品销量分布。
    价格分析:分析商品价格的中位数、平均值、最高价、最低价等。
    店铺分析:统计店铺的商品数量、平均销量、平均价格等。

python

运行

    import pandas as pd
    import matplotlib.pyplot as plt
     
    def analyze_goods_data(goods_list):
        # 转换为DataFrame
        df = pd.DataFrame(goods_list)
        # 销量分析
        sales_stats = df["sales_count"].describe()
        print("销量统计:")
        print(sales_stats)
        # 价格分析
        price_stats = df["price"].describe()
        print("\n价格统计:")
        print(price_stats)
        # 店铺商品数量统计
        shop_goods_count = df["shop_name"].value_counts().head(10)
        print("\n店铺商品数量TOP10:")
        print(shop_goods_count)
        # 可视化销量分布
        plt.hist(df["sales_count"], bins=20)
        plt.title("商品销量分布")
        plt.xlabel("销量")
        plt.ylabel("商品数量")
        plt.show()

六、完整代码实现

python

运行

    import requests
    import hashlib
    import time
    import random
    import pandas as pd
    import matplotlib.pyplot as plt
     
    def generate_sign(params, app_secret):
        sorted_params = sorted(params.items(), key=lambda x: x[0])
        sign_str = ''.join([f"{k}{v}" for k, v in sorted_params])
        sign_str += app_secret
        sign = hashlib.md5(sign_str.encode()).hexdigest().upper()
        return sign
     
    def get_access_token(app_key, app_secret):
        url = "https://open.weidian.com/oauth2/token"
        params = {
            "app_key": app_key,
            "app_secret": app_secret,
            "grant_type": "client_credentials"
        }
        response = requests.post(url, params=params)
        result = response.json()
        return result.get("access_token")
     
    def build_request_params(keyword, page, page_size, app_key, access_token, app_secret):
        params = {
            "app_key": app_key,
            "access_token": access_token,
            "keyword": keyword,
            "page": page,
            "page_size": page_size,
            "timestamp": int(time.time()),
            "nonce": random.randint(100000, 999999)
        }
        params["sign"] = generate_sign(params, app_secret)
        return params
     
    def search_goods(keyword, page=1, page_size=20):
        app_key = "your_app_key"
        app_secret = "your_app_secret"
        access_token = get_access_token(app_key, app_secret)
        params = build_request_params(keyword, page, page_size, app_key, access_token, app_secret)
        url = "https://open.weidian.com/api/v1/goods/search"
        headers = {
            "Content-Type": "application/x-www-form-urlencoded"
        }
        response = requests.post(url, data=params, headers=headers)
        return response.json()
     
    def parse_search_result(raw_data):
        goods_list = []
        if raw_data.get("code") == 0 and raw_data.get("data"):
            for item in raw_data["data"].get("list", []):
                goods_info = {
                    "goods_id": item.get("goods_id"),
                    "goods_name": item.get("goods_name"),
                    "price": item.get("price") / 100,
                    "sales_count": item.get("sales_count"),
                    "shop_id": item.get("shop_id"),
                    "shop_name": item.get("shop_name"),
                    "main_image": item.get("main_image")
                }
                goods_list.append(goods_info)
        return goods_list
     
    def analyze_goods_data(goods_list):
        df = pd.DataFrame(goods_list)
        sales_stats = df["sales_count"].describe()
        print("销量统计:")
        print(sales_stats)
        price_stats = df["price"].describe()
        print("\n价格统计:")
        print(price_stats)
        shop_goods_count = df["shop_name"].value_counts().head(10)
        print("\n店铺商品数量TOP10:")
        print(shop_goods_count)
        plt.hist(df["sales_count"], bins=20)
        plt.title("商品销量分布")
        plt.xlabel("销量")
        plt.ylabel("商品数量")
        plt.show()
     
    # 示例:搜索关键词“手机”,获取前2页数据并进行分析
    if __name__ == "__main__":
        keyword = "手机"
        all_goods = []
        for page in range(1, 3):
            raw_data = search_goods(keyword, page=page, page_size=20)
            goods_list = parse_search_result(raw_data)
            all_goods.extend(goods_list)
        print(f"共获取到 {len(all_goods)} 件商品数据")
        if all_goods:
            analyze_goods_data(all_goods)

七、注意事项

    接口权限:部分接口需要申请特定权限,需在微店开放平台控制台配置。
    请求频率:严格遵守微店开放平台的接口调用频率限制,避免超限。
    数据格式:接口返回的价格、金额等字段以分为单位,需转换为元。
    错误处理:针对不同的错误码(如令牌过期、权限不足)进行针对性处理。
    签名验证:每次请求都需要重新生成签名,确保签名的有效性。

通过以上方法,开发者可以快速对接微店搜索接口,实现商品数据的采集和分析,为电商运营和市场调研提供有力支持。在实际应用中,还需根据具体需求进行灵活调整和优化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/972362.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年电磁采暖炉品牌厂商权威推荐榜单:电磁感应采暖炉/节能电磁采暖炉/高频电磁采暖炉设备源头厂家精选

在清洁能源转型与采暖技术升级的双重推动下,电磁采暖炉市场正以每年超过15%的速度快速增长,成为替代传统电阻式采暖设备的主流选择。 电磁采暖炉作为采用电磁感应加热技术的新型取暖设备,其热效率、安全性能与使用寿…

新疆防火涂料十大品牌权威推荐!覆盖乌鲁木齐、喀什、伊犁、和田、哈密、克拉玛依、吐鲁番、昌吉、阿克苏、阿勒泰、塔城,源头厂家品质之选,筑牢建筑安全防线

在新疆广袤的土地上,从乌鲁木齐的现代化商圈到喀什的特色建筑群,从伊犁的大型场馆到和田的民生工程,钢结构建筑的防火安全始终是工程建设的重中之重。随着《钢结构防火涂料应用技术规程》DB65/T 8028—2024 的全面实…

2025 最新搬家公司推荐!全国同城 / 长途 / 国际 / 日式搬家公司排行榜,专业靠谱服务商精选汇总

引言 搬家作为生活与工作中的重要事务,却常因行业乱象让消费者陷入困扰:隐形消费层出不穷、物品损坏理赔艰难、服务网点覆盖不足、专业能力参差不齐等问题,严重影响搬迁体验。为帮助有搬家需求的个人、家庭及企业精…

石油石化电力电缆生产厂家推荐权威TOP名单(2025年11月):涵盖低压、中压、聚乙烯绝缘电缆生产厂家盘点

在石油石化行业中,电力传输的安全性与稳定性对生产运营至关重要,而石油石化电力电缆、低压电缆、中压电缆及聚乙烯绝缘电缆作为核心传输设备,其性能直接影响行业生产流程的连续性与安全性。2025 年,市场上涌现出一…

2025年杭州口碑好的GEO优化实力厂家有哪些,GEO优化服务/GEO优化AI工具排名/会展服务/节目内容策划制作GEO优化实力厂家选哪家

行业背景分析 随着数字营销进入精细化运营时代,GEO优化作为提升本地化营销效果的关键技术,正受到越来越多企业的重视。杭州作为数字经济发展领先城市,涌现出一批专注于GEO优化服务的实力企业。本文基于市场调研和公…

2025年路灯品牌权威推荐榜单:太阳能路灯/市电路灯/高杆灯供应商精选

在城市化进程和智慧城市建设的双重推动下,道路照明市场正朝着智能化、节能化的方向快速发展,高品质、高可靠性的路灯产品成为构建现代城市基础设施的关键。 路灯作为城市公共设施的重要组成部分,其照明效率、节能效…

2025 年 11 月铁路地铁电缆厂家 TOP 推荐:覆盖电力、中压低压、变频、聚乙烯 / 聚氯乙烯绝缘电缆

铁路与地铁作为城市交通的核心枢纽,电缆是保障其电力传输、信号稳定的关键载体,其中电力电缆、中低压电缆(含中压、低压细分品类)、变频电缆、聚乙烯绝缘电缆、聚氯乙烯绝缘电缆等产品的品质,直接关系到轨道交通系…

2025 年矿山煤矿专用电缆生产厂家 TOP10 推荐:中低压 / 变频 / 聚乙烯 / 聚氯乙烯绝缘电缆优选企业

在矿山煤矿行业的生产运营中,电力传输的稳定性与安全性直接关系到作业效率与人员安全,而专用电缆作为核心传输载体,其耐磨损、抗腐蚀、适应复杂工况的性能至关重要。当前市场上,部分通用电缆难以满足矿山煤矿井下潮…

2025年广东到印度专线双清包税ddp平台权威推荐榜单:广东到印度专线双清包税机构/广东空运到印度物流/广东空运到印度专线服务商精选

在中印贸易持续深化的背景下,选择一家可靠的、提供全程DDP服务的物流伙伴,已成为跨境电商和出口贸易企业开拓印度市场的关键一环。 跨境物流,尤其是包含双清包税和DDP服务的物流模式,能够极大简化出口商的流程。本…

AWS安全三剑客:Shield、WAF与Firewall Manager全面解析

本文深入解析AWS三大核心安全服务:Shield提供DDoS攻击防护,WAF专注于应用层安全,Firewall Manager实现多账户统一管理。详细对比三者的功能特性、适用场景和成本结构,帮助企业根据自身需求选择最佳安全组合方案。A…

2025 年铁路地铁专用电缆生产厂家 TOP 推荐:电力 / 中低压 / 低压 / 中压 / 变频 / 聚乙烯绝缘 / 聚氯乙烯绝缘电缆11月优质企业精选

在铁路与地铁交通系统的建设和运营中,电缆作为电力传输与信号传递的核心载体,其性能与质量直接决定了交通网络的安全稳定性、运行效率及使用寿命。铁路地铁场景对电缆的适配性要求极高,不仅需满足不同电压等级(低压…

博客园相关的cmake需要有用的学习笔记总结:

博客园相关的cmake需要有用的学习笔记总结:整体介绍cmake 写法,需要有一定的cmake 语法基础后,可以快速入门。(这里有对源文件的处理,对应file使用和cmake 其他的学习笔记有冲突,有的帖子说尽量不要使用,原因是…

2025 年 11 月轨道交通电力电缆生产厂家精选:中低压电缆(含中压 / 低压)、变频电缆、聚乙烯绝缘电缆、聚氯乙烯绝缘电缆优质企业 Top10 推荐

轨道交通系统的安全稳定运行,离不开各类专用电缆的支撑。其中,电力电缆、中低压电缆(含中压与低压细分品类)、变频电缆、聚乙烯绝缘电缆及聚氯乙烯绝缘电缆,作为能量传输与信号传递的核心载体,直接关系到线路运营…

llama-factory llm模型微调框架

LlamaFactory 是一个功能强大、易于使用的大语言模型微调框架。 LlamaFactory 是一个 “一站式”的大模型微调工具包。它基于 PyTorch 和 Hugging Face 生态系统构建,提供了统一的接口和丰富的优化策略,极大地简化了…

#C语言——学习攻略:攻克 文档操作内容(一),根本不在话下!

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

iOS 上架 App 得多钱?从开发者账号、构建环境到分发成本的完整成本结构分析

本文从工程预算角度拆解“iOS 上架 App 得多钱”,包含开发者账号费用、设备(Mac 与否)、构建方式、IPA 上传、素材制作与审核返工成本。结合云打包与跨平台上传(如 Appuploader CLI),开发者可在较低成本下完成完…

20251121

浅浅看一看Forge的mod开发

2025年双P淋膜防漏杯定制厂家权威推荐榜单:隔热瓦楞杯/双层套筒纸杯/斜口薯条杯源头厂家精选

在环保包装日益重要的今天,这些纸容器制造商正以创新技术推动行业变革。 随着全球对塑料污染问题的日益关注,环保纸制包装容器市场正迎来快速增长。双PE淋膜防漏杯因其防水防油、耐热易回收的特性,已成为餐饮行业替…

新能源行业时序数据库选型指南:五大关键维度与评估标准

随着风电、光伏等新能源产业的快速发展,海量时序数据的高效管理成为行业数字化转型的关键瓶颈。本文针对新能源场站监控、功率预测、设备运维等核心场景,从数据采集频率、存储经济性、系统可靠性、平台兼容性和智能应…

gobgp的安装和使用

安装 相关介绍 GoBGP 是一个用 Go 语言实现的开放源代码,用于在服务器上实现BGP的功能。主要是利用 Go 语言的特性来提供高效、可靠的 BGP 路由功能。GoBGP 支持多种 BGP 特性,包括路由服务器、路由反射器、策略管理…