一、前言

淘宝官方为应用开发者提供了一套很好的 API,开发是只要调用它的 API 接口就可以获取相应的数据。笔者现正从事 Java Web 开发,因而就淘宝 API 调用方法做出一点总结,主要还是对于官方 API 文档的一些解释与样例的实现。可能会存在较为片面的地方,看客若觉得有什么意见还望提出。

二、开发前期

我这里指的开发前期工作,主要指的是正式开始编写代码前的一些前期工作,主要包括加入开放平台、创建应用、管理应用等阶段。这些阶段在淘宝开放平台上已经有了非常详细的图文教程,相信读者按照上面的流程认真操作就可以完成这些操作,因此不做过多的赘述。在此假定我们已经完成了应用的创建,并且得到了该应用的 App Key 和 App Secret,如下图所示:

点击左边导航 SDK 下载,选择开放平台 API SDK(Java 版下载),如下图所示,选择生成最新 SDK,然后下载,会得到两个 jar 包,将这两个 jar 包导入到你的工程中:

这样,前期的工作基本完成了。

三、API Tools 在线测试工具

API Tools 在线测试工具确实是一个很强大的东西,如果我们掌握了如何使用会大大提升我们的开发效率。下面是 taobao.products.searh 的 API 测试工具显示:

taobao.products.search 这个 API 的功能是搜索产品的信息,相当于我们输入一些关键字,它就会按照关键字来尽可能多的返回信息。

返回格式:有 xml 和 json 格式两种,这里我们默认 xml,因为在后面看结果的话会清晰一些。

数据环境:选择正式,因为我们最后还是要在真正的环境下运行

AppKey和AppSecret:这里最好输入你的应用的 key 和 secret,系统分配有一个问题就是超过次数导致无法使用,而我们自己的 key 和 secret 是刚刚申请的,不会有这样的问题。

fields:这一栏是我们想要 API 返回的一些信息,如果你想要哪个信息,将它的变量名填入(以逗号隔开)就可以了。

q、cid、prop:这三个打了蓝色的“*”,说明至少需要填写一个,表示三个不同的关键字,关键字给的越多,搜索越精确。

其他变量:具体查看 API 文档定义,用法还是一样的。

比如说我现在要搜索“衬衫”这个关键字,如下填入参数,由于抓取的数量可能比较多,我们设置 page_no 为 1,page_size 为 5,也就是只抓取 5 条,点击提交测试,返回如下:

我们将返回结果复制出来,保存到 XML 文件中,显示如下

<?xml version="1.0" encoding="UTF-8"?>

-<products_search_response>

<!--top010178028035.n.et2-->


-<products list="true">


-<product>

<cid>162104</cid>

<name>INC 女装 女式长袖衬衫 Q01216998</name>

<pic_url>http://img03.taobaocdn.com/bao/uploaded/i3/TB1EG25GVXXXXbiXpXX3c0X7VXX_013408.jpg</pic_url>

<product_id>317634545</product_id>

<props>20000:3641086;13021751:767610673</props>

</product>


-<product>

<cid>50014802</cid>

<name>美国直邮Columbia哥伦比亚X477417_10户外男防紫外线短袖衬衫</name>

<pic_url>http://img02.taobaocdn.com/bao/uploaded/i2/TB1IV65GVXXXXbuXpXX2jwN7FXX_013217.jpg</pic_url>

<product_id>316785659</product_id>

<props>20000:27976;13021751:767670300</props>

</product>


-<product>

<cid>50014802</cid>

<name>美国直邮Columbia哥伦比亚X477417_9户外运动男防紫外线短袖衬衫</name>

<pic_url>http://img05.taobaocdn.com/bao/uploaded/i5/TB1hQCMGVXXXXcXXVXXNiIL7FXX_013206.jpg</pic_url>

<product_id>317542591</product_id>

<props>20000:27976;13021751:767710018</props>

</product>


-<product>

<cid>50014802</cid>

<name>美国直邮Columbia哥伦比亚X477417_8户外运动男防紫外线短袖衬衫</name>

<pic_url>http://img04.taobaocdn.com/bao/uploaded/i4/TB1TZT8GVXXXXXLXXXXn7MG7FXX_013151.jpg</pic_url>

<product_id>317800483</product_id>

<props>20000:27976;13021751:767614579</props>

</product>


-<product>

<cid>50014802</cid>

<name>美国直邮Columbia哥伦比亚X477417_7户外运动男防紫外线短袖衬衫</name>

<pic_url>http://img05.taobaocdn.com/bao/uploaded/i5/TB1FHD2GVXXXXcIXFXXwfQE7FXX_013136.jpg</pic_url>

<product_id>317486602</product_id>

<props>20000:27976;13021751:767564989</props>

</product>

</products>

<total_results>1408236</total_results>

</products_search_response>

可以看出,测试抓去了 5 条以“衬衫”为关键字的产品,分别列出了它们的相应属性值。再看网站右下角,显示了 SDK 调用示例代码,我们直接复制到 Java 代码中就能实现同样的功能,当然这些都是后话。

在线测试工具还有一个强大的功能就是,当你进行了错误的输入时,它会返回相应的错误给你,让你知道错在哪里,也就是说,这个工具给调试提供了巨大的便利,相信你会喜欢上它。