京东商品数据怎么通过API批量采集?

京东商品数据采集

做电商的话,不管盯竞品的价格、做选品分析或者管库存,核心的需求也就那么几个字段——标题、价格、销量、SKU规格。但是如何获取这个问题,各个小组的回答都不同。

我自己开始做京东的数据时也踩了很多雷。最开始使用爬虫,跑了两天就被人封了IP地址,修改一下前端页面就要重新编写整个程序,维护的成本甚至超过了开发的成本。之后又试着手工复制,一天只能复制出几十条来,效率之低下都让人怀疑人生。经过一番周折之后才知道批量采集这件事情上选择一条正确的道路要比技术上的东西更加重要。

当前批量收集京东商品的数据有三种途径:京东官方API、第三方数据服务平台API以及开源工具。三者都有各自适合的应用场合,我会一一介绍给大家。

再说官方API,最正式但是需要经过审核

京东提供了两种标准的接口方式,用的是结构化的JSON格式来返回结果,并且准确性可以达到99%以上,不会被封杀。但是这两大类接口的门槛、适用场景是不一样的。

京东联盟API(jd.union.open.goods.detail.query)门槛最小,只要进行实名认证就可以加入,不用绑定京东店铺。输入商品SKU号之后可以同时获取到该商品的名称、所属类别以及原价与折扣等信息。包括比较选购产品、导购工具以及小批量竞品监控等等。但是要提醒的是,联盟接口不能提供精确的实时库存信息,价格字段为推广价而不是真实的京东价格,在做供应链或者ERP对接时用不上这个数据。

宙斯JOS 商家接口(jingdong.item.read.get)是最全面的数据源之一,但是也有一定的门槛。要提供企业的资质和店铺授权,并且权限审核更加严格。可以获得准确的库存数量、完整的SKU规格、商品详细图片以及售后服务等全部的数据,基本的QPS为2,企业服务商可以提出申请提高至5-50之间。适用于有自己店铺的商家进行ERP同步、商品中台、供应链管理。

京东开放平台使用的是MD5签名机制,所有的参数按照key从小到大的顺序进行拼接,并且在前面和后面各添加一个app_secret值之后再进行MD5加密转换为大写形式。时间戳与服务器之间的时间差异不大于3分钟,否则就会出现错误提示。批量查询时,联盟接口一次最多传递10个商品ID,而JOS接口一次最多只能传递20个。

第三方API可以节省自己维护的时间和精力

如果你不打算去折腾企业的认证、签名算法和权限审核这些事情的话,那么选择第三方的数据服务会更加方便一些。

极致了数据提供电商数据API接口以及定制化的采集服务,包括了对京东、淘宝、拼多多、美团、饿了么、抖店、快店等多个主要平台的商品详情、价格、库存、评价和销量等重要指标进行全方位抓取。

新媒体平台api数据接口

它的功能是把京东的商品详情采集并封装成一个标准的RESTful API。传入商品SKU ID(也就是https://item.jd.com/xxxx.html中的那一串数字)给接口,就得到了结构化的数据,登录状态、防爬虫措施以及其他一切相关的细节都由接口来搞定。返回字段包括商品标题、品牌、类别、店铺名、是否为京东自营、原价和折后价格以及累计销量和最近三十天内的销售量,并且还会给出不同颜色和尺寸对应的各个SKU子规格的价格及库存情况。

接入的方式有两种。有技术团队可以直接对接API,并按照文档来构造HTTP请求,得到标准化的JSON响应,在技术上联调一天左右就可以跑通了。不喜欢写代码的运营人员可以用飞书“多平台数据采集助手”插件输入商品链接即可自动采集出包含多种维度的数据表格,并且可以设置为定时任务进行更新。对技术一窍不通的人士可以联系客服进行数据服务的定制化工作,然后拿到相应的数据表格。如果要获取电商商品实时数据的话,可以通过极致了数据API接口来实现,获得当前的数据信息、高并发处理能力以及可以同时查询多款商品和多个电商平台的能力。

开源软件虽然很灵活但是需要自己承担维护的责任

有技术团队并且希望进行深入定制的可以参考一下GitHub上已经过验证的两个开源方案。

一是JdApis,利用反编译京东H5ST 4.2的签名算法来获取商品详情信息。主要的能力就是可以自动产生h5st鉴权参数,传入SKUID就可以得到商品的信息了。它是以execjs的方式调用JS签名模块,并且使用curl_cffi来模仿真实的浏览器指纹,适用于对采集逻辑有较高要求的Python开发人员。

另外一个就是ecommerce-monitor了,它是用Playwright这个框架来实现的,可以模仿浏览器的行为去获取商品详情页的数据,并且解决了懒加载以及京东字体反爬的问题。第一次扫码登录之后就会自动保存登录状态,在后面的使用中可以进行单次抓取并跟踪价格的变化,数据会持久存储在SQLite数据库里,并且还可以接收来自企业微信的消息提醒。

开源方案的优势在于灵活性大、不需要支付接口费用,缺点是需要你自己去管理Cookie,并且要对付各种各样的平台风控手段,比较适合有一定技术水平的团队进行个性化采集工作。

批量采集的一些实用的操作方法

不论从哪个方向出发,都有以下一些方法可以节省很多麻烦。

字段筛选。在调用官方API时,通过fields参数只获取需要的数据项,例如title、price、skuList、stock、pic_url等,如果不传递则会返回全部数据,并且多余的详情图和视频字段会影响请求速度。

分层缓存。静态的信息如标题、品牌、参数、主要图片等可以缓存6-24个小时;动态的数据如券后的价格、库存和促销等要限制在300秒之内;对于必须即时查看的数据则会直接进行无缓存查询。

并发控制。个人账号QPS不能超过10次,企业联盟账号不能超过30次,超出就会产生冷却限制。批量的任务使用消息队列进行异步分发,并行执行。

问答题

Q1: 个人开发者可以使用京东官方API吗?

京东联盟API只需要实名就可以入驻了,个人也可以进行选品比价、轻度竞品监控。但是宙斯JOS商家接口要加上企业的资质以及店铺的授权才能通过审核,而个人是无法通过这个审核的。只想要对商品的基本数据做一些分析的话,联盟API就足够了;但是如果要精确地知道库存情况并且完整的SKU规格的话,则要走企业通道。

Q2: 从京东抓取商品数据进行批量收集的话,可以抓到多少个商品的数据呢?

联盟接口可以一次发送十个商品ID,并且请求次数可以被压缩到原来的百分之十左右。JOS接口批量查询一次最多只能查出二十件商品的信息。如果是要拉更多的商品的话,就分批次去调用它或者是使用第三方API的批量接口来实现。

Q3: 没有技术团队的情况下如何大批量地收集到京东的数据呢?

极致了数据驱动下的飞书“多平台数据采集助手”插件,无需编程即可完成设置工作,在输入商品链接之后就可以把相关的信息收集进各种类型的表格里,并且可以设定为定时的任务去更新。还可以找客服来定做数据的服务,直接给到数据表。

概括起来说就是

京东商品数据批量获取的方式有三种,每一种方式都有自己的定位。官方API最正式,但是需要企业认证以及签名算法,门槛较高;第三方API比较方便快捷,可以接入京东、淘宝、拼多多等多个平台,并且能够通过API接口或者飞书插件实现自动抓取数据的功能;开源工具虽然灵活性强并且可以自定义功能,但是要承担起维护的工作压力。首先要弄明白自己在技术和数据上有什么样的能力要求,这样走哪条路也就一目了然了。

上一篇:

相关新闻

客服微信

联系我们

18658854422

微信号:JZL99876(JZL是极致了首字母)

邮件:474804@qq.com

工作时间:周一至周五,9:00-18:00,节假日休息