在线用户    站点地图 技术论坛 文档中心 站点导航 资源下载 语言参考 教程专题 站点统计 业务项目 使用帮助
您的位置
MSDN参考新加了CSS2参考,全中文,制作精良。245k下载。           新加了sxf_sxf推荐的"动态网页专家指导" 下载!          新加了lsg2002lsg推荐的"ASP.NET高级编程(PDF)" 下载!          新加了DHTML代码预览!!,功能强大哦!欢迎试用          新加了网友lincong为大家提供的SQL Server 2000 程序员指南,有点大,但同时也就说明内容全咯!           新加了网友ibra为大家提供的北大的JAVA课件,很适合初学者入门           新加了一个java的连接缓冲池代码示例           新加了人月神话电子版下载!软件工程巨著哦~~           更新了评分标准,引入了“专家分”概念,相信可以更好的激励大家的学习!详情请看“使用帮助”           新加了由网友GGG提供的“IIS超级管理手册”,值得一看哦!(虽然我没看过 :P )           新加了“英雄榜”,欢迎测试!           “无组件上传·从原理剖析到实践”已经全部完成,源码全部开放,有兴趣的朋友请到文档中心一探究竟。  您的位置  首页>文档中心>DHTML>文档A0000851 在同一窗口中打开页面中的链接 在新窗口中打开页面中的链接 将ASPCHINA设为首页 将ASPCHINA加入书签    
 LOGIN HERE
用户:
密码: 忘记密码
记住密码 用户注册 游客进入
相关文章

关于下载音频附件的说明

一个Jsp初学者的学习过程(一)

MSXML 4.0 SDK 下载

网页特效代码

一本好书:Java Servlet and JSP Cookbook

用Java设计下载软件

[下载] Beginning ASP.NET 1.1 (.NET 2003)

利用ADODB.Stream使用浏览器下载服务器文件

好书啊!!《动态网页专家指导》下载!!

"ASP.NET高级编程(PDF)" 下载!
发表文章
下载整站图片

原作者:位流先锋     提交人:程式浪人     发布时间:04-11-30     文章类型:转贴     浏览量:4208
参考链结:http://www.8asp.com    
关键字:javascript|js|下载
[本文档没有附件]
字体:    视力保护色: 杏仁黄  秋叶褐  胭脂红  芥末绿  天蓝  雪青  灰  银河白(默认色) [A0000851]


/****************************************************************************
*  CopyRight 2004 http://www.8asp.com 位流先锋 版权所有
*  作者:位流先锋
*  编写时间:2004-11-7
*  程序说明:自动下载整站文件
****************************************************************************/

/*
以下要手工配置
*/

var pgfile=new Array(".asp",".php",".jsp",".htm",".html",".aspx",".shtml",".cgi");        //页面文件类型
var dlfile=new Array(".gif",".jpg");                                      //下载的文件类型
var path="g:\\dl\\";                                                      //保存目录
var site="http://fashion.qq.com/";                                        //要下载的网站


/*
手工配置结束
*/



var visiurl=new Array();  //已访问过的页面
var visidl=new Array();  //已下载文件
var urlstack=new Array(); //页面链接栈
var dlstack=new Array();  //下载栈(分析完一个页面就下载)
var curpath=site;        //网站当前路径
//urlstack.push("http://news.163.com/special/f/fotocenter.html");
urlstack.push(site);
//urlstack.push("http://www.viewstock.com/viewstock/search.aspx?korc=Key&keyword=中国");


//检查文件是否已经下载
function isdl(url)
{
  for(var i=0;i<visidl.length;i++)
    if(visidl[i]==url)return true;
  return false;
}


//检查页面是否已经访问过
function isvisipg(url)
{
  for(var i=0;i<visiurl.length;i++)
  { 
    if(visiurl[i]==null)continue;
    if(visiurl[i]==url)return true;
  }
  return false;
}


//检查是否页面文件
function ckpg(lptxt)
{
  if (lptxt==null)return false;
  if (-1!=lptxt.indexOf("http://")&&-1==lptxt.indexOf(site)) return false;
  for(var i=0;i<pgfile.length;i++)
    if (-1!=lptxt.indexOf(pgfile[i]))
    {
      return true;
    }
  return false;
}


//检查是否下载文件
function ckdl(lptxt)
{
  if (lptxt==null)return false;
  for(var i=0;i<pgfile.length;i++)
    if (-1!=lptxt.indexOf(dlfile[i]))
    {
      return true;
    }
  return false;
}




//*
//测试
var shell=new ActiveXObject("wscript.shell");

//*/

//消息对话框
function errmsg(description)
{
  shell.popup(description,10,"出错了",0);
}

//获取文件名
function fnfromurl(url)
{
  return url.substr(url.lastIndexOf("/")+1);
}


//分析<a herf=""></a>
function taga(page)
{
  var curval;
  var tmp;
  var dot="";
  var curtmp="";
  var dotc=0;
  var j=0;
  page=page.toLowerCase();
  page=page.replace("\n"," ");
  page=page.replace("\r"," ");
  page=page.replace(/[ ]+/," ");
  var regexp=/<a.*?>.*?<\/a>/ig;
  var url=/.*?href=("|')(.*?)\1.*/ig;
  var url2=/(.*?)href=(.*?)(?: |>).*/ig;
  while ((tmp=regexp.exec(page))!=null)
  {
      curtmp=curpath;
      url.lastIndex=0;url2.lastIndex=0;
      if(null==url.exec(tmp)||RegExp.$1==null)url2.exec(tmp);
      curval=RegExp.$2;//errmsg(curval);
      if (curval!=null&&curval!=""){
      if (ckpg(curval))
      {
        if (-1!=curval.indexOf("http://"))
        {
          if(!isvisipg(curval)){urlstack.push(curval);}
        }
        else if("/"==curval.substring(0,1))
        {
          if(!isvisipg(site+curval)){urlstack.push(site+curval);}
        }
        else if("."==curval.substring(0,1))
        {
          dot=curval.substring(0,curval.indexOf("/"));
          if (dot==".")
          {
            curval=curval.substr(curval.indexOf("/")+1);
          }
          else if(dot=="..")
          {
            curval=curval.substr(curval.indexOf("/")+1);
            curtmp=curtmp.substring(0,curtmp.lastIndexOf("/"));
          }
          else if(dot.length>2)
          {
            curval=curval.substr(curval.indexOf("/")+1);
            curtmp=curtmp.substring(0,curtmp.lastIndexOf("/"));
            dotc=dot.length-2;
            for(j=0;j<dotc&&dot.indexOf(j+2)==".";j++)
            {curtmp=curtmp.substring(0,curtmp.lastIndexOf("/"));}
          }

          if(!isvisipg(curtmp+"/"+curval)){urlstack.push(curtmp+"/"+curval);}
        }
        else
        {
          if(!isvisipg(curpath+"/"+curval)){urlstack.push(curpath+"/"+curval);}
        }
      }
      curtmp=curpath;
      if (ckdl(curval))
      {
        if (-1!=curval.indexOf("http://"))
        {
          if(!isdl(curval)){dlstack.push(curval);}
        }
        else if("/"==curval.substring(0,1))
        {
          if(!isdl(site+curval)){dlstack.push(site+curval);}
        }
        else if("."==curval.substring(0,1))
        {
          dot=curval.substring(0,curval.indexOf("/"));
          if (dot==".")
          {
            curval=curval.substr(curval.indexOf("/")+1);
          }
          else if(dot=="..")
          {
            curval=curval.substr(curval.indexOf("/")+1);
            curtmp=curtmp.substring(0,curtmp.lastIndexOf("/"));
          }
          else if(dot.length>2)
          {
            curval=curval.substr(curval.indexOf("/")+1);
            curtmp=curtmp.substring(0,curtmp.lastIndexOf("/"));
            dotc=dot.length-2;
            for(j=0;j<dotc&&dot.indexOf(j+2)==".";j++)
            {curtmp=curtmp.substring(0,curtmp.lastIndexOf("/"));}
          }

          if(!isdl(curtmp+"/"+curval)){dlstack.push(curtmp+"/"+curval);}
        }
        else
        {
          if(!isdl(curpath+"/"+curval)){dlstack.push(curpath+"/"+curval);}
        }
      }
      }
  }//log();
}



//分析<img src="">
function tagimg(page)
{
  var curval;
  var tmp;
  var dot="";
  var curtmp="";
  var dotc=0;
  var j=0;
  page=page.toLowerCase();
  page=page.replace("\n"," ");
  page=page.replace("\r"," ");
  page=page.replace(/[ ]+/," ");
  var regexp=/<img.*?>/ig;
  var url=/.*?src=("|')(.*?)\1.*/ig;
  var url2=/(.*?)src=(.*?)(?: |>).*/ig;
  while ((tmp=regexp.exec(page))!=null)
  {
      curtmp=curpath;
      url.lastIndex=0;url2.lastIndex=0;
      if(null==url.exec(tmp)||RegExp.$1==null)url2.exec(tmp);
      curval=RegExp.$2;//errmsg(curval);
      if (curval!=null&&curval!=""){
      if (ckdl(curval))
      {
        if (-1!=curval.indexOf("http://"))
        {
          if(!isdl(curval)){dlstack.push(curval);}
        }
        else if("/"==curval.substring(0,1))
        {
          if(!isdl(site+curval)){dlstack.push(site+curval);}
        }
        else if("."==curval.substring(0,1))
        {
          dot=curval.substring(0,curval.indexOf("/"));
          if (dot==".")
          {
            curval=curval.substr(curval.indexOf("/")+1);
          }
          else if(dot=="..")
          {
            curval=curval.substr(curval.indexOf("/")+1);
            curtmp=curtmp.substring(0,curtmp.lastIndexOf("/"));
          }
          else if(dot.length>2)
          {
            curval=curval.substr(curval.indexOf("/")+1);
            curtmp=curtmp.substring(0,curtmp.lastIndexOf("/"));
            dotc=dot.length-2;
            for(j=0;j<dotc&&dot.indexOf(j+2)==".";j++)
            {curtmp=curtmp.substring(0,curtmp.lastIndexOf("/"));}
          }

          if(!isdl(curtmp+"/"+curval)){dlstack.push(curtmp+"/"+curval);}
        }
        else
        {
          if(!isdl(curpath+"/"+curval)){dlstack.push(curpath+"/"+curval);}
        }
      }
      }
  }//log();sleep(20);
}


//分析页面
function assay()
{
  try{
  var page="";
  var fso=new ActiveXObject("scripting.filesystemobject");
  var f=fso.opentextfile(path+"\\temp.txt",1);
  page=f.readall();
  //errmsg(page);
  f.close();
  //fso.deletefile(path+"\\temp.txt");
  taga(page); //分析<a herf=""></a>
  tagimg(page); //分析<img src="">
  //log();
  }
  catch(e)
  {
  errmsg(e.description);
  return false;
  }
  return true;
}


//下载页面
function getpage(url)
{
  if(url==null||url==""){return false;}
//获取当前目录
//var reg=/(.*)\/.*/;
//reg.exec(url);
curpath=url.substr(0,url.lastIndexOf("/"));

  try
  {
    var oXml=new ActiveXObject("Microsoft.XMLHTTP");
    oXml.open("GET",url,false);
    oXml.send();
    var oStream=new ActiveXObject("Adodb.Stream");
    with(oStream)
    {
      mode=3;
      type=1;
      open();
      write(oXml.responsebody);
      savetofile(path+"\\temp.txt",2);
    }
    visiurl.push(url);
    oStream.close();
  }
  catch(e)
  {
    //alert("下载失败");
    //return null;
  }
}


//下载文件
function dl(url)
{
if(url==null||isdl(url)){return null;}
var t=new Date();
  try
  {
    var oXml=new ActiveXObject("Microsoft.XMLHTTP");
    oXml.open("GET",url,true);
    oXml.send();
    var oStream=new ActiveXObject("Adodb.Stream");
    with(oStream)
    {
      mode=3;
      type=1;
      open();
      write(oXml.responsebody);
      savetofile(path+"\\Bit"+t.getHours()+t.getMinutes()+t.getSeconds()+fnfromurl(url),2);
    }
    visidl.push(url);
    oStream.close();
  }
  catch(e)
  {
    //alert("下载失败");
    return null;
  }
}


//下载当前页面找到的文件
function dlcurpg()
{
  var url;
  while(dlstack.length>0)
  {
    url=dlstack.pop();
    if(!isdl(url))dl(url);
  }
}


//执行
function main()
{
  var url;
  record();
  var i=0;
  while(urlstack.length>0)
  {
    url=urlstack.pop();
    if(!isvisipg(url))
    {
      getpage(url);
      assay();
      dlcurpg();
      //if(++i==50){log();i=0;}
    }
  }
  log();
}


main();


//读取记录
function record()
{
try{
  var tmp;
  var fso=new ActiveXObject("scripting.filesystemobject");
  var f=fso.opentextfile(path+"\\log.txt",1);
  tmp=f.readall();
  f.close();
  var tmparray=tmp.split("\r\n");
  for(var i=0;i<tmparray.length;i++)
  {
    if(tmparray[i]!=null&&tmparray[i]!=""){
    if(tmparray[i].length>7&&tmparray[i].substring(0,7)=="已访问过的页面")visiurl.push(tmparray[i].substr(tmparray[i].indexOf(":")+1));
    if(tmparray[i].length>5&&tmparray[i].substring(0,5)=="已下载文件")visidl.push(tmparray[i].substr(tmparray[i].indexOf(":")+1));
    if(tmparray[i].length>5&&tmparray[i].substring(0,5)=="页面链接栈")urlstack.push(tmparray[i].substr(tmparray[i].indexOf(":")+1));
    }
  }
}
catch(e)
{}
}


//程序运行记录
function log()
{
var i=0;

//shell.run("cmd.exe /c echo ******************** > "+path+"\log.txt",0,true);
//shell.run("cmd.exe /c echo ******************** >> "+path+"\log.txt",0,true);

shell.run("cmd.exe /c echo ******************** > "+path+"\log.txt",0,true);
for(i=0;i<visiurl.length;i++)shell.run("cmd.exe /c echo 已访问过的页面"+i+":"+visiurl[i]+" >> "+path+"\log.txt",0,true);
for(i=0;i<visidl.length;i++)shell.run("cmd.exe /c echo 已下载文件"+i+":"+visidl[i]+" >> "+path+"\log.txt",0,true);
for(i=0;i<urlstack.length;i++)shell.run("cmd.exe /c echo 页面链接栈"+i+":"+urlstack[i]+" >> "+path+"\log.txt",0,true);
for(i=0;i<dlstack.length;i++)shell.run("cmd.exe /c echo 下载栈"+i+":"+dlstack[i]+" >> "+path+"\log.txt",0,true);

//shell.run("cmd.exe /c echo ******************** >> "+path+"\log.txt",0,true);
//shell.run("cmd.exe /c echo ******************** >> "+path+"\log.txt",0,true);

}





关于这篇文章的评论 [注意:这里仅仅是给大家提供了一个发表对文章本身看法的地方,如果有疑问,请到论坛提出] 我要提问!
firefly        2004/11/30 14:40:00
:)
好咚咚~~
标题
内容
发言
*您尚未以注册用户身份登录,不能发表评论。这里登录
您的位置
  (c)2000-2020 Yup Studio, all rights reserved.  
107.4219