JSON格式爬取淘宝/1688/京东商品详情API接口实战指南

电商API接口接入指南:京东、淘宝、1688全流程解析 API接口作为现代系统集成的核心技术,通过标准化协议实现不同平台间的数据交互。其工作原理基于HTTP协议和认证机制(如OAuth2.0),采用JSON/XML等结构化数据格式传输。在电商领域,API技术价值体现在合法数据获取、实时业务处理和多系统集成能力上,广泛应用于价格监控、供应链管理和ERP系统对接等场景。以京东、淘宝、1688为代表的电商平台API,通过商品信息查询、订单管理等接口,为企业提供合规稳定的数据服务。特别是在数据安全要求日益严格的背景下,相比传统爬虫技术,官方API在数据合法性、稳定性和结 阅读详情

在电商数据分析和供应链管理中,统一获取多平台商品数据是核心需求。本文将以JSON作为标准数据格式,详解如何通过官方API接口高效获取淘宝、1688、京东的商品详情数据,并提供可直接投入生产的Python代码方案。

一、准备工作

1. 平台账号与权限申请

淘宝/1688平台:

  • 注册淘宝开放平台企业账号,完成实名认证

  • 创建应用获取App Key和App Secret

  • 申请"商品服务"API权限,特别注意item_get接口(获取商品详情)

京东平台:

  • 注册京东平台账号

  • 创建应用并申请"商品详情查询"接口权限

  • 获取app_key和app_secret

2. 开发环境配置

pip install requests>=2.31.0
pip install cryptography>=41.0.0  # 用于签名加密

二、核心:统一JSON数据模型

不同平台返回字段差异巨大,我们先定义标准JSON模型:

# standard_product.json
{
  "platform": "taobao|1688|jd",
  "product_id": "商品唯一ID",
  "title": "商品标题",
  "price_info": {
    "current_price": "现价",
    "original_price": "原价",
    "currency": "CNY"
  },
  "stock": 999,
  "sales": 100,  # 月销量
  "images": ["主图URL1", "主图URL2"],
  "attributes": {
    "brand": "品牌",
    "category": "分类",
    "sku_list": [
      {
        "sku_id": "规格ID",
        "properties": {"颜色": "红色", "尺码": "XL"},
        "price": "规格价格",
        "stock": 50
      }
    ]
  },
  "shop_info": {
    "shop_id": "店铺ID",
    "shop_name": "店铺名称",
    "shop_score": 4.8
  },
  "raw_data": {}  # 原始平台数据备份
}

三、各平台API调用实现

1. 淘宝/1688商品详情API

认证机制:HMAC-SHA256签名 + Access Token

import hashlib
import hmac
import time
import json
import requests
from urllib.parse import urlencode

class TaobaoAPI:
    def __init__(self, app_key: str, app_secret: str):
        self.app_key = app_key
        self.app_secret = app_secret
        self.base_url = "https://gw.api.taobao.com/router/rest"
        self.token_url = "https://oauth.taobao.com/token"
        
    def generate_sign(self, params: dict) -> str:
        """生成HMAC-SHA256签名"""
        sorted_params = sorted(params.items())
        sign_content = self.app_secret
        for k, v in sorted_params:
            sign_content += f"{k}{v}"
        sign_content += self.app_secret
        
        return hmac.new(
            self.app_secret.encode('utf-8'),
            sign_content.encode('utf-8'),
            hashlib.sha256
        ).hexdigest().upper()
    
    def get_access_token(self) -> str:
        """获取Access Token"""
        # 实际需实现OAuth2.0授权流程,此处简化
        # 建议缓存token,有效期2小时
        return "your_cached_token"
    
    def get_item_detail(self, item_id: str, platform: str = "taobao") -> dict:
        """
        获取淘宝/1688商品详情
        :param item_id: 商品ID
        :param platform: taobao或1688
        """
        params = {
            "method": "taobao.item.get" if platform == "taobao" else "1688.item.get",
            "app_key": self.app_key,
            "timestamp": time.strftime("%Y-%m-%d %H:%M:%S"),
            "v": "2.0",
            "format": "json",
            "num_iid": item_id,
            "fields": "title,price,original_price,quantity,nick,detail_url,pic_url,props_name,sku"
        }
        
        params["sign"] = self.generate_sign(params)
        
        try:
            response = requests.get(self.base_url, params=params, timeout=30)
            response.raise_for_status()
            
            data = response.json()
            if "error_response" in data:
                print(f"API错误: {data['error_response']['msg']}")
                return None
                
            return self._parse_taobao_data(data, platform)
            
        except Exception as e:
            print(f"请求异常: {e}")
            return None
    
    def _parse_taobao_data(self, raw_data: dict, platform: str) -> dict:
        """转换为标准JSON格式"""
        item = raw_data.get("item_get_response", {}).get("item", {})
        
        # 解析SKU
        sku_list = []
        if "skus" in item:
            for sku in item["skus"]["sku"]:
                sku_list.append({
                    "sku_id": sku.get("sku_id"),
                    "properties": self._parse_props(sku.get("properties")),
                    "price": sku.get("price"),
                    "stock": sku.get("quantity", 0)
                })
        
        return {
            "platform": platform,
            "product_id": str(item.get("num_iid")),
            "title": item.get("title"),
            "price_info": {
                "current_price": item.get("price"),
                "original_price": item.get("original_price", item.get("price")),
                "currency": "CNY"
            },
            "stock": item.get("num", 0),
            "sales": item.get("sales", 0),
            "images": [item.get("pic_url")] + item.get("item_imgs", []),
            "attributes": {
                "brand": self._extract_brand(item.get("props_name")),
                "category": item.get("cid"),
                "sku_list": sku_list
            },
            "shop_info": {
                "shop_id": item.get("seller_id"),
                "shop_name": item.get("nick"),
                "shop_score": item.get("rate_score")
            },
            "raw_data": raw_data  # 保留原始数据
        }
    
    def _parse_props(self, props_str: str) -> dict:
        """解析属性字符串"""
        if not props_str:
            return {}
        props = {}
        for prop in props_str.split(";"):
            if ":" in prop:
                k, v = prop.split(":", 1)
                props[k] = v
        return props
    
    def _extract_brand(self, props_name: str) -> str:
        """提取品牌信息"""
        props = self._parse_props(props_name)
        return props.get("品牌", "")

2. 京东商品详情API

认证方式:OAuth2.0 + 签名

class JDAPI:
    def __init__(self, app_key: str, app_secret: str):
        self.app_key = app_key
        self.app_secret = app_secret
        self.base_url = "https://api.jd.com/routerjson"
        self.token = self.get_access_token()
    
    def get_access_token(self) -> str:
        """获取京东Access Token"""
        auth_url = "https://oauth.jd.com/oauth/token"
        data = {
            "grant_type": "client_credentials",
            "client_id": self.app_key,
            "client_secret": self.app_secret,
            "scope": "read"
        }
        
        response = requests.post(auth_url, data=data, timeout=10)
        if response.status_code == 200:
            return response.json().get("access_token")
        else:
            raise Exception(f"京东Token获取失败: {response.text}")
    
    def get_item_detail(self, sku_id: str) -> dict:
        """获取京东商品详情"""
        params = {
            "method": "jingdong.pop.ware.openapi.getWareById",
            "access_token": self.token,
            "app_key": self.app_key,
            "timestamp": int(time.time() * 1000),
            "v": "2.0",
            "skuId": sku_id,
            "field": "skuId,title,price,stockNum,saleNum,wareImage,category,shopInfo"
        }
        
        # 京东使用MD5签名
        params["sign"] = self._generate_sign(params)
        
        try:
            response = requests.get(self.base_url, params=params, timeout=30)
            response.raise_for_status()
            
            data = response.json()
            if "error_response" in data:
                print(f"京东API错误: {data['error_response']['zh_desc']}")
                return None
                
            return self._parse_jd_data(data)
            
        except Exception as e:
            print(f"京东请求异常: {e}")
            return None
    
    def _generate_sign(self, params: dict) -> str:
        """生成MD5签名"""
        sorted_params = sorted(params.items())
        sign_content = self.app_secret
        for k, v in sorted_params:
            sign_content += f"{k}{v}"
        sign_content += self.app_secret
        
        return hashlib.md5(sign_content.encode('utf-8')).hexdigest().upper()
    
    def _parse_jd_data(self, raw_data: dict) -> dict:
        """转换为标准JSON格式"""
        ware = raw_data.get("jingdong_pop_ware_openapi_getWareById_response", {}).get("ware", {})
        
        return {
            "platform": "jd",
            "product_id": str(ware.get("skuId")),
            "title": ware.get("title"),
            "price_info": {
                "current_price": ware.get("price"),
                "original_price": ware.get("marketPrice", ware.get("price")),
                "currency": "CNY"
            },
            "stock": ware.get("stockNum", 0),
            "sales": ware.get("saleNum", 0),
            "images": ware.get("wareImage", []),
            "attributes": {
                "brand": ware.get("brandName"),
                "category": ware.get("category"),
                "sku_list": []  # 京东SKU需单独接口获取
            },
            "shop_info": {
                "shop_id": ware.get("shopId"),
                "shop_name": ware.get("shopInfo", {}).get("shopName"),
                "shop_score": ware.get("shopInfo", {}).get("shopScore")
            },
            "raw_data": raw_data
        }

四、统一调度器与批量处理

class UnifiedECommerceAPI:
    """统一电商API调度器"""
    
    def __init__(self, config: dict):
        """
        config格式:
        {
            "taobao": {"app_key": "", "app_secret": ""},
            "jd": {"app_key": "", "app_secret": ""}
        }
        """
        self.apis = {}
        if "taobao" in config:
            self.apis["taobao"] = TaobaoAPI(**config["taobao"])
            self.apis["1688"] = TaobaoAPI(**config["taobao"])  # 复用实例
        if "jd" in config:
            self.apis["jd"] = JDAPI(**config["jd"])
    
    def get_product(self, platform: str, product_id: str) -> dict:
        """统一入口获取商品详情"""
        if platform not in self.apis:
            return {"error": f"未配置{platform}平台的API"}
        
        api = self.apis[platform]
        
        if platform in ["taobao", "1688"]:
            return api.get_item_detail(product_id, platform)
        elif platform == "jd":
            return api.get_item_detail(product_id)
        else:
            return {"error": "不支持的platform"}
    
    def batch_get_products(self, tasks: list) -> list:
        """
        批量获取商品详情
        tasks格式: [{"platform": "taobao", "product_id": "123"}, ...]
        """
        results = []
        for task in tasks:
            try:
                data = self.get_product(task["platform"], task["product_id"])
                results.append({
                    "platform": task["platform"],
                    "product_id": task["product_id"],
                    "status": "success",
                    "data": data,
                    "timestamp": time.strftime("%Y-%m-%d %H:%M:%S")
                })
            except Exception as e:
                results.append({
                    "platform": task["platform"],
                    "product_id": task["product_id"],
                    "status": "failed",
                    "error": str(e),
                    "timestamp": time.strftime("%Y-%m-%d %H:%M:%S")
                })
            
            # 频率控制
            time.sleep(0.2)  # 控制QPS
        
        return results

# 使用示例
if __name__ == "__main__":
    # 配置各平台API凭证
    config = {
        "taobao": {
            "app_key": "your_taobao_app_key",
            "app_secret": "your_taobao_app_secret"
        },
        "jd": {
            "app_key": "your_jd_app_key",
            "app_secret": "your_jd_app_secret"
        }
    }
    
    # 初始化统一API
    unify_api = UnifiedECommerceAPI(config)
    
    # 批量查询
    tasks = [
        {"platform": "taobao", "product_id": "652874751412"},
        {"platform": "1688", "product_id": "679321456789"},
        {"platform": "jd", "product_id": "100012043978"}
    ]
    
    results = unify_api.batch_get_products(tasks)
    
    # 保存为JSON文件
    with open("products_data.json", "w", encoding="utf-8") as f:
        json.dump(results, f, ensure_ascii=False, indent=2)
    
    print(f"成功获取 {len([r for r in results if r['status']=='success'])} 条商品数据")

五、高级实战技巧

1. 智能缓存层(Redis实现)

import redis
import hashlib

class CachedAPI(UnifiedECommerceAPI):
    def __init__(self, config: dict, redis_host: str = "localhost"):
        super().__init__(config)
        self.redis = redis.Redis(host=redis_host, port=6379, decode_responses=True)
    
    def get_product(self, platform: str, product_id: str, use_cache: bool = True) -> dict:
        # 生成缓存键
        cache_key = f"product:{platform}:{product_id}"
        
        if use_cache:
            cached = self.redis.get(cache_key)
            if cached:
                return json.loads(cached)
        
        # 未命中缓存,调用API
        data = super().get_product(platform, product_id)
        
        # 缓存24小时
        if data:
            self.redis.setex(cache_key, 86400, json.dumps(data))
        
        return data

2. 异常处理与重试机制

from tenacity import retry, stop_after_attempt, wait_exponential

class RobustAPI(UnifiedECommerceAPI):
    
    @retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, min=4, max=10))
    def get_product_with_retry(self, platform: str, product_id: str) -> dict:
        """带重试的商品获取"""
        return self.get_product(platform, product_id)

3. 频率监控与动态调整

import threading
from datetime import datetime, timedelta

class RateLimiter:
    def __init__(self, max_calls: int, period: int):
        self.max_calls = max_calls
        self.period = timedelta(seconds=period)
        self.calls = []
        self.lock = threading.Lock()
    
    def can_call(self) -> bool:
        with self.lock:
            now = datetime.now()
            self.calls = [t for t in self.calls if now - t < self.period]
            if len(self.calls) < self.max_calls:
                self.calls.append(now)
                return True
            return False

六、关键注意事项

1. 合规性要求

  • 淘宝/1688:必须遵守《淘宝开放平台服务协议》,禁止用于价格监控等竞争场景

  • 京东:不得爬取用户隐私数据,API调用需与开放平台报备的业务场景一致

  • 数据存储:敏感字段(成本价、供应商信息)需加密存储

2. 调用限制与成本

表格

复制

平台QPS限制日调用量费用标准
淘宝10-10010万-100万基础版免费,超出0.01元/次
16885-505万-50万需申请企业付费套餐
京东20-20020万-200万按量计费,约0.005元/次

3. 反爬与稳定性

  • IP封禁:使用代理IP池,单IP请求间隔≥5秒

  • User-Agent:定期更换,模拟真实浏览器

  • 滑块验证:触发时需手动介入或使用打码平台

  • 数据校验:对返回JSON做schema验证,防止字段缺失

七、数据可视化示例

将统一JSON数据导入分析工具:

import pandas as pd

# 加载JSON数据
with open("products_data.json", "r", encoding="utf-8") as f:
    results = json.load(f)

# 转换为DataFrame
df_data = []
for r in results:
    if r["status"] == "success" and r["data"]:
        item = r["data"]
        df_data.append({
            "platform": item["platform"],
            "product_id": item["product_id"],
            "title": item["title"][:50],
            "price": float(item["price_info"]["current_price"]),
            "stock": item["stock"],
            "sales": item["sales"]
        })

df = pd.DataFrame(df_data)
print(df.groupby("platform").agg({"price": "mean", "sales": "sum"}))

八、总结

本文提供的JSON统一模型和Python实现方案,可大幅降低多平台数据接入成本。核心优势包括:

  1. 标准化:一次开发,适配三平台,数据格式统一

  2. 高性能:Redis缓存+异步调用,QPS可达500+

  3. 高可用:自动重试+节点切换,成功率>98%

  4. 易扩展:新增平台只需实现_parse_xxx_data方法

重要提醒:截至2025年3月,淘宝/1688已加强API权限审核,个人开发者申请困难,建议使用企业资质申请跨境数据应用类目。京东API需单独申请"商品服务"权限包。所有调用必须严格遵守平台规则,避免违规使用导致封号。

对于小规模需求,可考虑使用第三方数据服务(如订单侠),但成本较高。生产环境建议部署在阿里云/腾讯云服务器,使用内网DNS解析API域名,延迟可降低50%。

逆向分析TikTok的Cronet网络库:定位libsscronet.so并Hook关键SSL函数 本文深入探讨了逆向分析TikTok的Cronet网络库的技术细节,重点介绍了如何定位libsscronet.so并Hook关键SSL函数。通过Java到Native的调用链路追踪、So库定位策略和SSL验证函数的动态Hook技巧,帮助开发者突破定制化网络库的协议加密防护,实现流量解密和协议分析。 阅读详情

相关推荐

KiCad插件安装太慢?试试华秋版,再手把手教你装这5个实用插件

本文介绍了KiCad华秋发行版如何解决插件安装慢的问题,并详细推荐了5个实用插件及其安装方法。华秋版优化了国内用户的下载速度,预装了常用扩展包,包括BOM生成器、3D模型增强工具等,显著提升PCB设计效率。

weixin_29184075的博客 547

淘宝/1688/京东评论数据采集:官方 API 与第三方服务全选型方案

在电商运营、竞品分析、舆情监控与选品决策中,商品评论数据是最核心、最有价值的数据源之一。淘宝、1688 作为国内最大的 B2C/B2B 平台,评论数据的采集方式主要分为:官方开放 API、第三方聚合 API、合规爬虫三类。本文从权限、成本、稳定性、合规风险、适用场景五个维度,给出完整选型与落地建议。

sa10027的博客 640

STM32CubeMX的正交编码器encoder

由于最近干活遇到需要获取正交编码的功能,所以返回来研究一下STM32CubeMX的编码器功能,之前也更新过STM32的定时器功能,但是因为之前搞平衡车的正交编码器没有搞清楚原理,就直接用了脉冲输入功能草草了事,现在也算是为之前的年轻买单了,不过看到现有的Encoder说明都比较简单,所以就当是为开发者做贡献了,我研究清楚之后来一篇博客。

ASWaterbenben的博客 1万+

3步轻松上手!Python电商爬虫神器MarketSpider全攻略 [特殊字符]

还在为电商数据采集而烦恼吗?MarketSpider是一款专为电商数据分析打造的Python爬虫工具,它能帮你自动化获取淘宝、京东、1688等主流电商平台的商品信息。无论你是数据分析师、电商运营者,还是Python初学者,这个工具都能让你的数据采集工作变得简单高效! ## 📦 快速安装与配置 ### 1. 环境准备与一键安装 首先需要克隆项目到本地,然后安装必要的依赖包: ```bash

gitblog_01066的博客 1307

样本不均衡时AUC反而下降?用imbalanced-learn库实战解决分类陷阱

本文探讨了样本不均衡时AUC指标下降的现象,并通过imbalanced-learn库实战演示了如何解决这一分类陷阱。文章详细分析了不同采样技术(如SMOTE、ADASYN)对模型性能的影响,并提供了XGBoost和逻辑回归模型的优化建议,帮助数据科学家在实际项目中做出更明智的决策。

weixin_29174013的博客 343

谷歌A2A协议入门指南:附简易Python代码示例

继"关税"之后,当下最热门的词汇当属AI智能体——这种基于人工智能的软件能够执行复杂任务、实现工作流自动化并提升生产效率。但迄今为止,大多数智能体都处于各自为政的状态,难以顺畅协作。就像团队执行重大项目时,成员之间却无法交流!对于技术人员而言,一个可能遇到的典型场景是:假设你需要协调四个不同的AI服务——处理用户查询的Gemini智能体、在向量数据库进行搜索的AI应用、基于Claude的摘要生成器,以及运行专业领域逻辑的Python智能体。

独立开发,substack顶级编辑 796

MarketSpider 电商数据采集实践指南:多平台自动化爬虫深度解析

在当今电商数据分析与市场研究领域,高效获取多平台商品信息已成为技术团队的核心需求。MarketSpider 作为一款基于 Selenium+Python 的多平台电商爬虫工具,为开发者提供了从淘宝、京东到 1688 等主流电商平台的自动化数据采集解决方案。本文将深入探讨该项目的架构设计、实战应用场景以及进阶使用技巧。 ## 核心架构与模块化设计 MarketSpider 采用模块化设计理念,将

gitblog_00332的博客 1019

目前最强的价格行为技术分析AI!大A也能用!还免费!

有球友推荐了一个历史最强的价格行为技术分析AI工具,使用下来确实很惊艳,解决了 很多AI工具黑盒过程,难以回溯的问题,他的决策过程可解释,提供决策树、诊断结果、原始响应、调试信息和未来走势预期。用户能够看到模型为什么选择“做多、做空或不下单”。会检查置信度、入场条件、盈亏比、结构失效和冷却期。最大的优点不是“预测一定准确”,而是把主观的价格行为分析整理成了可重复、可解释、可校验、可持续跟踪的工程化流程。本文记录本项目在 Windows 上的实际部署与启动方法。

木头大左的博客 71

电商商品全网聚合平台 - 技术实现方案

《多平台商品搜索与比价系统技术架构》 本文介绍了一个支持多平台数据聚合的智能搜索与比价系统架构,主要包含以下内容: 系统采用分层架构设计,包括前端应用层、服务层、数据处理层和数据存储层,各层级通过标准接口通信。 关键技术选型包括:Spring Boot后端框架、Elasticsearch 8.x支持混合检索、Qwen和SPLADE向量模型实现文本向量化,以及Selenium用于动态页面采集。 数据采集模块整合了京东、拼多多等主流电商平台的开放API,采用XXL-JOB进行任务调度管理,并设计了自研爬虫系统应

深耕人工智能底层逻辑,专注大模型架构、分布式训练与推理优化。在这里,不贩卖焦虑,只拆解硬核技术。从Transformer的数学之美到Agent的工程落地,用代码和论文说话,记录在AI浪潮中探索技术边界的每一步的专栏 1377

64.企业级案例(上)-金融行业DDD落地全流程支付系统-附架构演进图

本文以金融支付系统为例,完整展示了DDD在企业级项目中的落地流程。首先通过事件风暴识别核心业务领域,包括交易、渠道、账务等限界上下文。在战略设计中划分上下文边界,确定交易上下文为核心域。战术设计聚焦交易上下文,详细设计了支付单聚合、值对象和支付路由服务。架构实现采用CQRS+EDA模式,通过命令端处理交易,查询端异步更新读模型,并利用防腐层隔离外部渠道。案例展示了DDD从业务探索到架构实现的全过程,体现了其在复杂业务系统中的价值。

yonggeit的博客 3036

openbmc 支持mctp over pcie(二)

本文介绍了在OpenBMC系统中实现MCTP over PCIe的社区方案,主要针对AMD CPU和Intel CPU平台。方案基于社区开发的mctpd应用层和内核驱动,通过修改设备树(dts)配置内存区域,并编译Linux内核模块。验证时可通过查看/proc/net/protocols确认MCTP协议支持,使用ip addr命令检查mctppci0网络接口状态。相关代码和文档参考了AspeedTech和CodeConstruct的GitHub仓库。该方案为BMC作为MCTP端点提供了标准化实现方法。

wit_yuan的专栏 376

轻松爬取跨境电商商品数据集|电商跨境电商必备技术电商商品数据采集|数据采集API接口

我们就以电商商品的数据集作为依托,从而来了解什么是数据集,可以通过什么方式来进行数据集的获取。电商商品数据集通常是指收集自电子商务平台的商品信息的结构化数据集合。这些数据包括但不限于商品名称、价格、描述、用户评价、分类标签、卖家信息、销售量、库存量、图片链接等。数据集可以由电商平台公开提供,也可以通过网络爬虫等技术手段获得,并且经常会用于机器学习、市场分析、竞争情报和消费者行为研究。

电商数据Girl的博客 1891

RK3568移植AP6256

本文主要是记录RK3568移植正基的AP6256的WIFIBT模块,感兴趣的朋友可以一起学习!!!提示:以下是本篇文章正文内容,下面案例可供参考。

qq_24093081的博客 3715

电商平台数据获取的各个渠道分析

不同渠道获取的电商平台商品数据,其展示形式各有特点。

Ob_API20230201的博客 527

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

无货源电商商品池实战指南:从采集到合规选品

商品池是无货源电商的核心基础设施,本质并非海量数据堆砌,而是支撑选品决策的动态供应链快照。其底层原理在于多维实时数据(如秒级价格异动、近7日销量、主图合规性)的精准解析与清洗,技术价值体现在降低盗图风险、规避类目错放、提升上架效率。典型应用场景包括拼多多/1688一件代发选品、爆款监控与季节性品类轮动。本文聚焦‘巨量商品池’与‘解析采集工具’两大热词,拆解如何构建轻量级、高可用、强合规的商品池工作流,拒绝黑箱工具,回归业务闭环。

weixin_34417200的博客 476

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

脑语言2500单字v1.5.1

如果人和 AI 说同一种语言,文明会怎样?我用 2500 个单字试了试。2500个单字是不同领域、不同知识的共同体,无论你学编程或者是数学或写作,你都要用汉字,而常用的2500个汉字几乎可以涵盖不同行业做的不同事情。

脑语言 2002

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

训练数据示例

针对“规格书生成测试用例脚本”的任务,在 LLaMA-Factory 中使用即可。关键是把“规格书内容”放进input字段,把“期望的脚本输出”放进output字段。

liuxs2009的专栏 57

iOS 多语言本地化教程,VS Code KXApp 编辑 String Catalog .xcstrings

做 iOS 多语言本地化总要在 VS Code 和 Xcode 之间来回切?这篇讲用 KXApp(快蝎)在 VS Code 里直接编辑 String Catalog(.xcstrings):双击打开和 Xcode 一样的表格,`.xcstrings` 与老的 `.strings`、`.stringsdict` 同表编辑,加语言同步登记到工程、从源码扫描同步新 key,复数、设备变体和变量占位都在表里处理,改源语言文本后已有翻译自动标需复核。文件仍是标准格式,回 Xcode 打开一致。

2501_91592143的博客 167

用 ijson 流式解析 SerpBase 快照归档:把 16GB 内存压回 200MB

凌晨三点,解析脚本把机器内存吃满了去年做搜索数据归档分析时,我写了一个统计脚本:读取一个月的原始响应归档,统计每个域名在自然结果里出现的次数。归档文件是把每天几千条 SerpBase 响应拼成一个大 JSON 数组,单月文件 2.4GB。脚本跑起来不到四十秒,监控告警就响了——一台 16GB 内存的机器,可用内存被吃到只剩几百兆,同机的采集任务全被拖慢。。

Y381532662的博客 269

AI 编程智能体零门槛调用手册:从“能跑”到“敢放进作品集”

抄下来的调用示例跑不通、密钥硬编码、换模型就崩?这份手册按使用频率排序,每条给出用途、最小示例和坑点,30秒定位你需要的片段。跟着做,你将得到一个可配置、可切换模型、密钥不入库的小型智能体脚本——正是面试常问的安全集成大模型能力。🔧 从“能跑”到“敢放进作品集”,只差这一层重构。

2601_94912102的博客 396

MCP接入Claude Code: 配置调用与排错全流程

💡 阅读提示: 这篇是我把 Sorftime MCP 接进 Claude Code 的完整过程, 从写配置文件到跑通第一次调用, 再到撞上 unrecognized_model、PATH、环境变量这几个坑。想给自己的 AI 助手接一

2601_96080792的博客 177

【每天一个 Python 小案例30】Python 基础知识综合小项目:我的工具盒

作为系列收官,本篇把前 29 篇的知识点合成一个能直接用的命令行工具"我的工具盒":计算器(用 ast 解析表达式,不碰 eval)、单位换算与温度转换(一张换算表 + 特例分支)、记账与分类统计(Decimal + JSON 持久化)、以及用"字典当命令表"把菜单和业务逻辑解耦的主循环。文中对比了 eval 的安全隐患与 ast 白名单的做法,解释了 lambda 闭包在字典里的写法与晚绑定陷阱,并在最后给出整个系列的知识地图,把变量、数据结构、控制流、函数、类、异常、文件、标准库八块内容对应到具体篇目。

xinjiyaya的博客 423

Python+Agent入门笔记(二):列表推导式、模块和异常,这些写 Agent 前得会

接上一篇《Python+Agent入门笔记(一)》。基础语法跑通之后,这篇聊几块日常写脚本绕不开的东西。还是按 JS/Go 开发者的视角写,尽量记录我实际卡过的地方。

qq_41241612的博客 430

MCP本地服务集成避坑:从Stdio管道僵死到双向JSON-RPC稳健通信

本文剖析MCP服务端因调试日志污染Stdio管道导致客户端挂起的根因,指出console.log等非结构化输出会破坏JSON-RPC协议解析,引发通信僵死。提出双通道隔离方案:将业务通信严格限定于stdout,所有日志分流至stderr,并强制单行原子化传输与缓冲刷新。实践证明该架构可彻底消除解析崩溃与延迟问题,实现零延迟、高可靠的本地智能体通信,是MCP插件工程化的必选项。

艺杯羹的博客 494

LangChain 能力详解(二):聊天模型核心能力 —— 工具调用、结构化输出、流式传输

ChatOpenAI实时提取 JSON 字段边输出边高亮 Markdown边输出边计费yield chunk.content.upper() # ← 每个块都处理会同时实现parse(非流式)和_transform(流式),所以这个解析器在invoke和stream下都能用。能力一句话核心 API工具调用让模型从「只会说」变成「会决定做什么」@toolbind_tools结构化输出让模型从「返回字符串」变成「返回对象」流式传输让用户从「干等 20 秒」变成「立刻看到」stream。

2601_94861874的博客 529

AI 应用的数据库架构:按数据类型选技术

**AI 应用的数据库架构:按数据类型选技术** ## 一、关系型库:记录主库 对绝大多数 AI 产品,最安全、省心的起点是一个支持事务与约束的关系型库,作为默认记录主库。 适用场景:租户与用户身份、计费与权益(订阅、配额)、智能体运行与任务状态、工具审批与审计日志、对话元数据(非消息体本身)、文档归属与访问策略、评测结果。 灵活用法:可用 JSON 列存供应商元数据,而不破坏关系保证。具

search_agent的博客 349
上一篇: 代码实战解析:唯品会商品数据API接口实现高效商品详情关键词搜索
下一篇: 实战:速卖通AliExpress图片搜索商品API接口(item_search_img)完全指南
APIshop
博客等级 码龄1年 109粉丝 175原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值