From 298251cfb5014e18fe25191f65bb65a0fca32904 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期四, 08 八月 2019 18:52:47 +0800
Subject: [PATCH] 增加拼多多与京东商品爬取JS

---
 fanli/src/main/java/com/yeshi/fanli/util/jd/JDUtil.java |   52 ++++++++++++++++++++++++++++++++++------------------
 1 files changed, 34 insertions(+), 18 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/util/jd/JDUtil.java b/fanli/src/main/java/com/yeshi/fanli/util/jd/JDUtil.java
index ff47881..b41eb1f 100644
--- a/fanli/src/main/java/com/yeshi/fanli/util/jd/JDUtil.java
+++ b/fanli/src/main/java/com/yeshi/fanli/util/jd/JDUtil.java
@@ -1,6 +1,9 @@
 package com.yeshi.fanli.util.jd;
 
+import java.io.BufferedReader;
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.io.UnsupportedEncodingException;
 import java.math.BigDecimal;
 import java.net.URLEncoder;
@@ -524,26 +527,39 @@
 
 		return null;
 	}
-	
-	public static String getJDGoodsId(String url) {
-		try {
-			if (url.startsWith("https://item.m.jd.com/product/") || url.startsWith("http://item.m.jd.com/product/")
-					|| url.startsWith("https://item.jd.com/") || url.startsWith("http://item.jd.com/")) {
-				String preUrl = url.split("\\?")[0];
-				String index = preUrl.split("/")[preUrl.split("/").length - 1];
-				index = index.split("\\.")[0];
-				return index.trim();
-			} else if (url.startsWith("https://item.m.jd.com/ware/view.action?")) {
-				String preUrl = url.substring(url.indexOf("?") + 1, url.length());
-				String[] sts = preUrl.split("&");
-				for (String st : sts) {
-					if (st.startsWith("wareId=")) {
-						return st.split("=")[1].trim();
-					}
-				}
-			}
 
+	public static String getJDGoodsJS() {
+		InputStream input = JDUtil.class.getClassLoader().getResourceAsStream("jdGoods.js");
+		StringBuilder sb = new StringBuilder();
+		String line;
+		BufferedReader br = new BufferedReader(new InputStreamReader(input));
+		try {
+			while ((line = br.readLine()) != null) {
+				sb.append(line);
+			}
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		return sb.toString();
+	}
+
+	static String jdGoodsJs = null;
+
+	public static String getJDGoodsId(String url) {
+		if (jdGoodsJs == null)
+			jdGoodsJs = getJDGoodsJS();
+		ScriptEngineManager manager = new ScriptEngineManager();
+		ScriptEngine engine = manager.getEngineByName("javascript");
+		try {
+			engine.eval(jdGoodsJs);
+			if (engine instanceof Invocable) {
+				Invocable in = (Invocable) engine;
+				String goodsId = in.invokeFunction("getGoodsId", url).toString();
+				if (!StringUtil.isNullOrEmpty(goodsId))
+					return goodsId.trim();
+			}
 		} catch (Exception e) {
+			e.printStackTrace();
 		}
 		return null;
 	}

--
Gitblit v1.8.0