asp采集解压gzip压缩网站数据

  asp如何采集使用gzip压缩过的网页数据。

  由于winrar的命令行工具不支持zip格式的文件,所以我选择了7z的命令行工具7za.exe,在百度搜索下就可以找到。


  在使用下面的代码前把cmd.exe(windows文件夹下有)和7za.exe拷贝到asp程序目录,时间关系,并没有写更多的容错以及返回值问题
  

    function unZip(file){
        //在线解压zip函数
        //by fisker (http://ifisker.com lionkay@gmail.com)
        var objFso=Server.CreateObject("scripting.FileSystemObject");
        var objWshShell=Server.CreateObject("Wscript.Shell");
        var zipFile=Server.MapPath(file);
        if(!objFso.FileExists(zipFile)) return false;
        var runcmd=Server.MapPath("cmd.exe")+" /c "+Server.MapPath("7za.exe")+" x "+zipFile+" -y -o"+Server.MapPath("./");
        var RetCode = objWshShell.Run(runcmd,1,true);
        if(RetCode!=0)return false;
        delete objWshShell;
        delete objFso;
    }
    //关于gzip压缩页面的问题
    //思路:用ServerXMLHTTP组件下载页面,保存爲*.zip文件,解压文件,读取文件
    //代码(JScript格式)
    function getGzipPage(url){
        //Gzip格式页面采集程序
        //by fisker (http://ifisker.com lionkay@gmail.com)
        var fileStream;
        var xmlHttp = Server.CreateObject("MSXML2.ServerXMLHTTP");
        xmlHttp.open("GET",url,false);
        xmlHttp.send(null);
        fileStream=xmlHttp.responseBody;
        delete xmlHttp;
        var objStream = Server.CreateObject("ADOD"+"B.Stream");
        objStream.Type = 1;
        objStream.Open();
        objStream.write(fileStream);
        objStream.SaveToFile(Server.MapPath("tmp.html.zip"),2);
        objStream.Flush();
        objStream.Close();
        delete objStream;
        unZip("tmp.html.zip");
        var str=ReadFile("tmp.html");//ReadFile,deleteFile就是简单的文本读取和文件删除函数,未附代码
        deleteFile("tmp.html.zip");
        deleteFile("tmp.html");
        return str;
    }

  作者:fisker(王朝网路 wangchao.net.cn)

来源:http://tc.wangchao.net.cn/it/detail_53265.html

评论(0)网络
阅读(77)喜欢(0)不喜欢(0)Asp/VBScript