使用javaScriptEngine实现动态爬虫脚本

编程

开发背景:Selenium是一个用于Web应用程序测试的工具,可以直接像真正的用户在操作浏览器。支持的浏览器包括IE,Mozilla Firefox,Safari,Google Chrome,Opera等。我们的项目中有很多基于selenium开发的小采集任务(一些网站使用js渲染,网站监控、网站定时截图等,必须使用selenium才能实现),而在ide开发工具中,每个网站都要写不同的采集规则,在开发工具中不断重启selenium,非常费时间,开发效率极低。为了提高效率,使用Java自带的ScriptEngine来实现Java动态执行代码方案,这个方案也方便内部非java开发人员也能写采集脚本。

目前在java 1.8中是使用Nashorn引擎来动态的JavaScript代码,可以使用javascript语法来调用整个java自带库和第三方库。

为方便脚本的编写,基于使用swing开发个简单的脚本编辑工具,GUI代码不介绍,执行动态脚本的实现代码

public void initRunOnceBtn(Container contentPane, int gridx, int gridy){

runButton = new JButton("运行一次");

runButton.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

String code = codeText.getText();

runButton.setEnabled(false);

new Thread(){

public void run(){

runcode(code);

runButton.setEnabled(true);

}

}.start();

}

});

contentPane.add(runButton, new GB(gridx,gridy,1,1).setInsets(10, 0,10,10));

}

public void runcode(String code){

ScriptEngineManager manager = new ScriptEngineManager();

ScriptEngine engine = manager.getEngineByName("JavaScript");

try{

engine.put("log", log);

engine.put("driver", driver);

engine.put("tool", com.test.WebCrawler.this);

// 执行这个脚本

engine.eval(code);

}

catch(Exception ex){

log.error("脚本执行出错======", ex);

}

}


测试1、使用文章标题在百度搜索中查看我博客文章被转载数据。

脚本代码

浏览器运行效果

控制台输出:

测试2:采集天猫骤划算商品信息

脚本代码:

浏览器运行效果

控制台输出:

以上是 使用javaScriptEngine实现动态爬虫脚本 的全部内容, 来源链接: utcz.com/z/517354.html

回到顶部