测试网址:登录 - 跨境电商平台接口提供商 数据采集公司 数据接口定制服务 企业级数据服务商

最近负责的项目,需要对接淘宝提供的 淘宝api,获取淘宝客的订单数据。在此过程中遇到了很多坑,特在此mark一下,可能对于一些大佬来说很简单,如果发现有错误欢迎指出。所有过程如下所示:

基于Intellij IDEA 创建Maven项目
将淘宝API依赖的jar包安装到本地maven仓库
根据公开的请求实例编写java脚本,获取返回的订单数据(Jason格式)
以javabean的形式解析json,并写到本地csv文件中
通过Maven将项目达成jar包,上传到开发机上。
编写shell脚本:执行jar包,并将生成的csv文件load到hive表中(作为fact层的明细数据)
通过crontab命令,后台定期执行shell脚本。
将订单数据与跳转数据关联,得到跳转pv/uv、转化率等指标。
下面针对每一步进行介绍,并说明遇到的坑

创建Maven项目
鉴于maven的依赖管理优势,先利用Intellij IDEA 创建maven项目。

安装jar包到本地仓库
因为本项目依赖淘宝api的jar包,需要下载相应的sdk,其中提供了API的请求封装、摘要签名、响应解释、消息监听等功能,使用SDK可以轻松完成API的调用,API结果的获取,消息的实时监听。

这里遇到了第一个坑:一开始考虑到python对jason的解析更方便(本人对python也更熟悉。。),想使用python写,但是调api时需要提供port,然而没拿到,最后还是使用了java。

使用淘宝api的步骤:(官方文档介绍)

你需要先创建相应的应用,获取App Key和App Secret。
根据你的脚本语言,下载对应的jdk,包括java、python、.net等可供选择。
获取jdk后,将其安装到本地maven仓库中(~/.m2/repository/),安装命令为:mvn install:install-file -Dfile=jar包的位置(参数一) -DgroupId=groupId(参数二) -DartifactId=artifactId(参数三) -Dversion=version(参数四) -Dpackaging=jar
安装完后,仓库和pom文件如下图所示:

maven在本地仓库中查找jar包是按照:groupId目录 到 artifactId目录 再到version目录的顺序查找。

编写java请求脚本
用java编写,因为后面要解析json,因此需要在pom文件中添加如下依赖:

淘宝提供的请求示例如下图所示(官方文档):

![在这里插入图片描述](https://img-blog.csdnimg.cn/20191112154902678.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1dCS0oxOTk3MDEwODAxOQ==,size_16,color_FFFFFF,t_70

响应式例:

![在这里插入图片描述](https://img-blog.csdnimg.cn/20191112155141392.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1dCS0oxOTk3MDEwODAxOQ==,size_16,color_FFFFFF,t_70

以订单创建时间为准,每天获取前一天的数据,参数start_time设置每次请求的时间(取每分钟请求一次),setSpan设置每次查询时长(设置为60秒),因此要获取一天的数据就调用1440次。很容易能跑通该示例,最终结果形式为:

解析json
解析json采用java bean的方式,将json转换成java对象,这里遇到第二个大坑:因为返回的json包含三层,因此一开始写了四个java实体类,但是可能对应关系没弄好,一直报错,太菜又一直没找到原因(心态有点小崩),最后在大神导师的指点下,直接用原生解析的方式获取最内层(n_tbk_order对应的json数组),然后再转换成java对象,只需要一个bean文件(见下图)就行。灵活变通还是很重要的啊!!

这里还有第三个坑:一开始大致观察数据(json字符串很长),以为返回的json数组中只包含一条订单数据,后来发现数据对不上,因此后来对数组遍历,果然发现数据`·量增加了,写代码逻辑一定要严谨啊!!

生成jar包
因为最终脚本要放在线上开发机上跑,因此需要打成jar包。一开使用Intellij IDEA 自带的project structure,但后来在开发机上一直报错,后来尝试使用maven插件,在pom文件中添加下列代码:

注意:记得修改mainClass的值,路径为:主程序包名.main程序名

最后在终端切换到maven项目根目录,执行命令:mvn clean package -Dmaven.test.skip=true -Dcheckstyle.skip=true,会在
即可在target目录下生成所需的jar包(名字中不带original的)。

坑四:一开始在常用的开发机上跑,但是貌似不能访问外网,因此一直访问gw.api.taobao.com/router/rest出错,后来换了一台线上开发机,成功跑通了。。

编写shell脚本
在开发机生成订单数据对应的csv后,编写shell脚本将其load到hive表中,方便后续的分析使用。因为是明细数据,因此建成fact表。

创建分区表:
CREATE TABLE ks_ad.dw_fact_commiosity_detail_di(id int,name string) partitioned by (dt STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,’ LINES TERMINATED BY ‘\n’STORED AS TEXTFILE;

插入数据:
load data local inpath ‘owwo/xxx.csv’ into table xxx PARTITION (partcol1=val1, partcol2=val2 …)

编写crontab命令
编写好shell脚本后,因为我们想要它每天定时执行,例如每天早上6点,这是就需要crontab命令,执行crontab -e添加用户调度任务。

crontab文件的含义:用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

minute hour day month week command 顺序:分 时 日 月 周 任务
1
本项目设置的是每天早上6段执行,如下所示:

00 06 * * * xx/taobao.sh >> yy.log 2>&1
1
上面命令后半段是将成的标准输出添加到log文件中,方便查看报错。

其中& 1 ,表示文件描述符 1指标准输出stdout。
对于2,表示标准错误,stderr。
2>&1 的意思就是将标准错误重定向到标准输出,而标准输出已经重定向到了yy.log中,因此最终都会在log中显示。

这里还有个坑:

使用contrab时默认以contrab用户的身份执行shell文件,因此首先需要用chmod命令改变jar包和shell脚本的权限,暴力点可以直接chmod 777 xx.sh
另外,crontab默认将生成的csv文件保存在根目录/home下,因此在jar包中要注意输出csv的路径,否则后面load数据会找不到csv文件。
关联跳转数据
完成上面的步骤后,在hive中就可以得到我们所需的订单数据表了,后面根据业务需求,与其他进行数据进行关联分析。

淘宝API,api各种接口相关推荐

  1. 淘宝/天猫获取淘宝直播分类id接口 API 返回值说明

    item_videolist_cat-获取淘宝直播分类id接口 [查看演示] API测试工具 注册开通 onebound.taobao.item_videolist_cat 公共参数 请求地址: ht ...

  2. 按分类搜索淘宝直播接口API,淘宝直播API接口

    一.按分类搜索淘宝直播接口API,淘宝直播API接口代码对接分享 1.公共参数: 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接在URL中) secret Stri ...

  3. taobao.trade.fullinfo.get( 获取单笔交易的详细信息API接口),淘宝店铺订单明文接口代码分享

    采用官方taobao.trade.fullinfo.get( 获取单笔交易的详细信息 )接口拿到店铺订单详情,包括:买家信息,交易创造时间,商品交易数据,商品订单号,付款时间,付款金额,收货人手机号码 ...

  4. tmall.product.schema.add(淘宝天猫商品发布接口),淘宝商品发布API接口,tmall.product.schema.get产品信息获取接口

    tmall.product.schema.add(淘宝天猫商品发布接口),淘宝商品发布API接口,可以用于店铺发货,店铺订单详情获取,店铺明文接口,订单同步,订单推送等业务,下面是一套完整的订单发货的 ...

  5. 淘宝商品评价api接口(app、h5端),淘宝评论视频API接口,淘宝评论API接口

    淘宝商品评价api接口(app.h5端),淘宝评论视频API接口,淘宝评论API接口可以通过商品id,获取商品评价信息.评价内容.买家秀图片.评论浏览量.评价视频.评价追评等页面上展示的数据均可以拿到 ...

  6. 淘宝商品评价api接口,淘宝评论视频API接口,淘宝评论API接口(app、h5端)

    淘宝商品评价api接口,淘宝评论视频API接口,淘宝评论API接口(app.h5端)可通过商品id,获取商品评价信息.评价内容.买家秀图片.评论浏览量.评价视频.评价追评等页面上展示的数据均可以拿到, ...

  7. 淘宝/天猫API:item_videolist_cat-获取淘宝直播分类id接口

    万邦淘宝/天猫获取淘宝直播分类id接口 API 返回值说明 item_videolist_cat-获取淘宝直播分类id接口 onebound.taobao.item_videolist_cat 公共参 ...

  8. API电商平台“淘宝店铺所有商品接口”调用示例

    API电商平台"淘宝店铺所有商品接口"调用示例 以下是行业内了解到的一些情况,本帖只展示部分代码,需要更多API调试请移步注册API账号登录 - 跨境电商平台接口提供商 数据采集公 ...

  9. 淘宝/天猫淘宝评论问答列表接口 API

    item_question_answer-淘宝评论问答列表接口  注册开通 onebound.taobao.item_question_answer 公共参数 名称 类型 必须 描述 key Stri ...

  10. 淘宝/天猫API:item_question_answer-淘宝评论问答列表接口

    万邦淘宝/天猫淘宝评论问答列表接口 API 返回值说明 item_question_answer-淘宝评论问答列表接口 onebound.taobao.item_question_answer 公共参 ...

最新文章

  1. HTML元素的基本特性
  2. R语言sd函数计算数值标准差实战(Standard Deviation)
  3. mysql镜像远程连接_Docker创建MySQL镜像并成功进行远程连接
  4. Spring框架中的设计模式(四)
  5. highcharts如何把图多余的空白页面_如何进行前端性能测试入门篇
  6. Ubuntu服务器安装snmpd(用于监控宝)
  7. Win7 32位下DebugView和DriverMinitor不能打印调试信息的问题
  8. 分析SpinnerActivityTest中有关控件操作以及UI线程问题
  9. c#制作的简单的画图板
  10. java怎么输出liststring_春招|春招实习上岸,分享面筋回报社区(Java、Python)...
  11. JS 打印 data数据_用D3.js 十分钟实现字符跳动效果
  12. word根据数字符号自动回车
  13. sparksql 与flinksql 建表 与 连表记录
  14. 电脑更改IP地址后,Oracle数据库需要重新配置IP问题(一招搞定,永久有效)
  15. 2013年8个存储热点话题总结及高端存储发展趋势
  16. Protel DXP 使用教程 - 自定义集成库
  17. CC2530 实现无线串口
  18. 2013年总结-托福备考,减肥成功,微软实习,VMware工作,硕士毕业
  19. 牛客IOI周赛20-普及组
  20. 海康摄像头恢复出厂监控录像视频恢复

热门文章

  1. 从新东方讲师到AI框架工程师,我的历次职业转折|OneFlow U
  2. gearman和python客户端的安装和使用
  3. MongoDB 3.2.7 for rhel6.4 副本集-分片集群部署
  4. linux上wget命令出现HTTP request sent, awaiting response... 400 Bad Request问题
  5. 关于微软无线鼠标适配的问题
  6. openssl开发库安装时的踩坑指南
  7. LSF - 提交GUI应用到LSF无法运行,报错Failed to connect to socket /tmp/dbus-xxxxxxxxx: Connection refused
  8. PerformanceManagementSystem
  9. 1.18 Spreadsheet
  10. java面试笔试题50道及答案