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