Commit e8a74983 by leiliangliang

测试TaoBaoUtil中js解析引擎

parent a252c834
...@@ -10,6 +10,7 @@ import com.zhiwei.searchhotcrawler.crawler.TaoBaoHotSearchCrawler; ...@@ -10,6 +10,7 @@ import com.zhiwei.searchhotcrawler.crawler.TaoBaoHotSearchCrawler;
import com.zhiwei.searchhotcrawler.timer.*; import com.zhiwei.searchhotcrawler.timer.*;
import com.zhiwei.searchhotcrawler.timer.quartz.GatherTimer; import com.zhiwei.searchhotcrawler.timer.quartz.GatherTimer;
import com.zhiwei.searchhotcrawler.util.DateUtils; import com.zhiwei.searchhotcrawler.util.DateUtils;
import com.zhiwei.searchhotcrawler.util.TaoBaoUtils;
import com.zhiwei.searchhotcrawler.util.TipsUtils; import com.zhiwei.searchhotcrawler.util.TipsUtils;
import com.zhiwei.tools.tools.ZhiWeiTools; import com.zhiwei.tools.tools.ZhiWeiTools;
import org.slf4j.Logger; import org.slf4j.Logger;
...@@ -78,5 +79,12 @@ public class HotSearchRun { ...@@ -78,5 +79,12 @@ public class HotSearchRun {
logger.info("{}, 淘宝热搜此轮采集到的数据量为:{}", new Date(), taoBaoList != null ? taoBaoList.size() : 0); logger.info("{}, 淘宝热搜此轮采集到的数据量为:{}", new Date(), taoBaoList != null ? taoBaoList.size() : 0);
TipsUtils.addHotList(HotSearchType.淘宝热搜.name(), taoBaoList); TipsUtils.addHotList(HotSearchType.淘宝热搜.name(), taoBaoList);
logger.info("淘宝热搜采集结束..."); logger.info("淘宝热搜采集结束...");
String signs = "5e0f7f7d1a31fa7b6d73d201aedf9b1a&1626862517909&12574478&{\"appId\":\"10211\",\"params\":\"{\\\"multi_hintq_show\\\":\\\"on\\\",\\\"src\\\":\\\"c2c\\\",\\\"area\\\":\\\"active_page\\\",\\\"sversion\\\":\\\"7.5\\\",\\\"bangdan_src\\\":\\\"list\\\"}\"}";
String s = TaoBaoUtils.parsJSFunction1(signs);
logger.info("返回sign1结果: {}",s);
String s1 = TaoBaoUtils.parsJSFunction2(signs);
logger.info("返回sign2结果: {}",s1);
} }
} }
...@@ -17,7 +17,8 @@ public class TaoBaoUtils { ...@@ -17,7 +17,8 @@ public class TaoBaoUtils {
//脚本的执行结果 //脚本的执行结果
String scriptResult = ""; String scriptResult = "";
//1.得到脚本引擎 //1.得到脚本引擎
ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript"); //ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
ScriptEngine engine = new ScriptEngineManager().getEngineByExtension("js");
try { try {
InputStream in = null; InputStream in = null;
try { try {
...@@ -48,5 +49,77 @@ public class TaoBaoUtils { ...@@ -48,5 +49,77 @@ public class TaoBaoUtils {
} }
return scriptResult; return scriptResult;
} }
public static String parsJSFunction1(String sign) {
//脚本的执行结果
String scriptResult = "";
//1.得到脚本引擎
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
//ScriptEngine engine = new ScriptEngineManager().getEngineByExtension("js");
try {
InputStream in = null;
try {
in = TaoBaoUtils.class.getClassLoader().getResourceAsStream("taobao.js");
//如果js存在文件里
//Resource aesJs = new ClassPathResource("taobao.js",TaoBaoUtils.class.getClassLoader());
//InputStream inputStream = aesJs.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(in);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
if (Objects.isNull(engine)){
log.info("engine1为空");
}
if(Objects.isNull(bufferedReader)){
log.info("bufferedReader1为空");
}
engine.eval(bufferedReader);
} finally {
in.close();
}
// engine.eval(new BufferedReader(new InputStreamReader(inputStream))
// .lines().parallel().collect(Collectors.joining(System.lineSeparator())));
//3.将引擎转换为Invocable,这样才可以掉用js的方法
Invocable invocable = (Invocable) engine;
//4.使用 invocable.invokeFunction掉用js脚本里的方法,第一個参数为方法名,后面的参数为被调用的js方法的入参
scriptResult = (String) invocable.invokeFunction("h", sign);
} catch (Exception e) {
log.error("Error executing script1: ", e);
}
return scriptResult;
}
public static String parsJSFunction2(String sign) {
//脚本的执行结果
String scriptResult = "";
//1.得到脚本引擎
//ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
ScriptEngine engine = new ScriptEngineManager().getEngineByMimeType("text/javascript");
try {
InputStream in = null;
try {
in = TaoBaoUtils.class.getClassLoader().getResourceAsStream("taobao.js");
//如果js存在文件里
//Resource aesJs = new ClassPathResource("taobao.js",TaoBaoUtils.class.getClassLoader());
//InputStream inputStream = aesJs.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(in);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
if (Objects.isNull(engine)){
log.info("engine2为空");
}
if(Objects.isNull(bufferedReader)){
log.info("bufferedReader2为空");
}
engine.eval(bufferedReader);
} finally {
in.close();
}
// engine.eval(new BufferedReader(new InputStreamReader(inputStream))
// .lines().parallel().collect(Collectors.joining(System.lineSeparator())));
//3.将引擎转换为Invocable,这样才可以掉用js的方法
Invocable invocable = (Invocable) engine;
//4.使用 invocable.invokeFunction掉用js脚本里的方法,第一個参数为方法名,后面的参数为被调用的js方法的入参
scriptResult = (String) invocable.invokeFunction("h", sign);
} catch (Exception e) {
log.error("Error executing script2: ", e);
}
return scriptResult;
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment