如何使用Java爬虫数据获取淘宝商品详情教程

186 阅读2分钟

商品详情的重要性

淘宝商品详情包括商品标题、价格、销量、评价、图片等信息,这些信息对于市场分析、客户洞察、内容监控等多种业务场景至关重要。

Java爬虫基础

Java爬虫是指使用Java语言编写的程序,用于从互联网上的网页中提取数据。Java爬虫通常使用HTTP客户端库(如HttpClient、OkHttp)来发送请求,以及HTML解析库(如Jsoup)来解析HTML文档。

1. 获取API调用凭证

在开发者平台中获取API密钥(API Key)或访问令牌(Access Token)。

微信截图_20240823140109.png 获取key测试 

2. 调用商品详情API

使用Java的HTTP客户端库发送请求,调用淘宝的商品详情API。以下是一个简单的示例代码:

item_get-获得淘宝商品详情

taobao.item_get

公共参数

名称类型必须描述
keyString调用key(必须以GET方式拼接在URL中)
secretString调用密钥
api_nameStringAPI接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等]
cacheString[yes,no]默认yes,将调用缓存的数据,速度比较快
result_typeString[json,jsonu,xml,serialize,var_export]返回数据格式,默认为json,jsonu输出的内容中文可以直接阅读
langString[cn,en,ru]翻译语言,默认cn简体中文
versionStringAPI版本

请求参数

请求参数:num_iid=652874751412&is_promotion=1

参数说明:num_iid:淘宝商品ID
is_promotion:是否获取取促销价

响应参数

Version: Date:2022-04-04

名称类型必须示例值描述
itemitem[]1宝贝详情数据

请求响应

微信截图_20240927091422.png

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
import java.nio.charset.Charset;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.PrintWriter;
import java.net.URLConnection;

public class Example {
	private static String readAll(Reader rd) throws IOException {
		StringBuilder sb = new StringBuilder();
		int cp;
		while ((cp = rd.read()) != -1) {
			sb.append((char) cp);
		}
		return  sb.toString();
	}
	public static JSONObject postRequestFromUrl(String url, String body) throws IOException, JSONException {
		URL realUrl = new URL(url);
		URLConnection conn = realUrl.openConnection();
		conn.setDoOutput(true);
		conn.setDoInput(true);
		PrintWriter out = new PrintWriter(conn.getOutputStream());
		out.print(body);
		out.flush();
		InputStream instream = conn.getInputStream();
		try {
			BufferedReader rd = new BufferedReader(new InputStreamReader(instream, Charset.forName("UTF-8")));
			String jsonText = readAll(rd);
			JSONObject json = new JSONObject(jsonText);
			return json;
		} finally {
			instream.close();
		}
	}
	public static JSONObject getRequestFromUrl(String url) throws IOException, JSONException {
		URL realUrl = new URL(url);
		URLConnection conn = realUrl.openConnection();
		InputStream instream = conn.getInputStream();
		try {
			BufferedReader rd = new BufferedReader(new InputStreamReader(instream, Charset.forName("UTF-8")));
			String jsonText = readAll(rd);
			JSONObject json = new JSONObject(jsonText);
			return json;
		} finally {
			instream.close();
		}
	}
	public static void main(String[] args) throws IOException, JSONException {
		// 请求示例 url 默认请求参数已经URL编码处理
		String url = "https://api-gw.onebound.cn/taobao/item_get/?key=<您自己的apiKey>&secret=<您自己的apiSecret>&num_iid=652874751412&is_promotion=1";
		JSONObject json = getRequestFromUrl(url);
		System.out.println(json.toString());
	}

}

示例:解析淘宝API返回值

淘宝API返回的JSON数据可能包含以下字段:

  • 商品ID:商品的唯一标识符。
  • 标题:商品的标题,通常包含关键字。
  • 价格:商品的价格信息。
  • 销量:商品的销售数量。
  • 描述:商品的详细描述。
  • 图片URL:商品图片的URL地址。