Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
searchhotcrawler
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zhiwei
searchhotcrawler
Commits
e8a74983
Commit
e8a74983
authored
Jul 22, 2021
by
leiliangliang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
测试TaoBaoUtil中js解析引擎
parent
a252c834
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
82 additions
and
1 deletions
+82
-1
src/main/java/com/zhiwei/searchhotcrawler/run/HotSearchRun.java
+8
-0
src/main/java/com/zhiwei/searchhotcrawler/util/TaoBaoUtils.java
+74
-1
No files found.
src/main/java/com/zhiwei/searchhotcrawler/run/HotSearchRun.java
View file @
e8a74983
...
@@ -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
);
}
}
}
}
src/main/java/com/zhiwei/searchhotcrawler/util/TaoBaoUtils.java
View file @
e8a74983
...
@@ -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
;
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment