zoukankan      html  css  js  c++  java
  • 脚本嵌入式抓取引擎

    J2SE 6.0 (有些地方也叫1.6)增加了脚本嵌入,使JAVA可以模拟动态语言的方式运行。这个类是ScriptEngineManager,被添加在javax.script命名空间中。执行脚本的程序很简单,看以下代码:

            ScriptEngineManager m = new ScriptEngineManager();
            ScriptEngine engine 
    = m.getEngineByExtension("js");
            
    try {
                engine.eval("java.lang.System.out.println(\"测试脚本输出\");");
            } 
    catch (ScriptException e) {
                log.Log(
    "执行脚本错误:" + file.getFileName());
                log.Log(e.getMessage());

            }
    在java执行的javascript代码中也可以调用java对象。这样就可以由java提供一些API,由javascript来组织逻辑部分。
    比如,可以让上面的代码执行以下脚本:
    var Crawler = com.cnblogs.yurow.engin.Crawler;
    var StreamWriter = com.cnblogs.yurow.engin.StreamWriter;
    var RAMFile = com.cnblogs.yurow.engin.RAMFile;
    var out = java.lang.System.out;
    var starturl = "http://www.cnblogs.com/birdshover/default.html?page=";


    for(var i = 435112;i<435212;i++){
        
    var tempurl = starturl + i;
        
    var content = new Crawler(tempurl).getResponse("utf-8");
        
    if(content != null){
            
    var file = new RAMFile(tempurl,content);
            StreamWriter.Save(
    "result/" + i + ".html",file,"utf-8",true);
        }
    }
    其中Crawler是抓取类,StreamWriter是用来保存文件的,RAMFile是内存中文件的组织结构。这些都是自己定义的java类。
    我包装了一个JCrawler.jar,读取当前目录下的js文件以确定需要执行的脚本。这些脚本可能被存放在不同的目录。读取到这个目录列表,然后执行目录列表中每个javascript的逻辑。
    演示抓取程序:
    执行其中的bat文件就可以执行抓取,默认把抓取到的文件保存在result目录下。
    写javascript的时候要注意脚本文件的注释最好不要使用单行只是“//”,而是要“/*  */”。运行环境需要jre6.0。
  • 相关阅读:
    Minimum Depth of Binary Tree leetcode java
    Maximum Depth of Binary Tree leetcode java
    Symmetric Tree leetcode java
    Same Tree leetcode java
    Binary Tree Postorder Traversal leetcode java
    Binary Tree Preorder Traversal leetcode java
    Binary Tree Inorder Traversal leetcode java
    Combinations leetcode java
    一键清除Centos iptables 防火墙所有规则
    阿里云centos7.7x64安装open,并配置ip转发和nat伪装
  • 原文地址:https://www.cnblogs.com/birdshover/p/1378230.html
Copyright © 2011-2022 走看看