小女巫 发表于 2015-1-16 23:47:35

ASP教程之用ASP编写下载网页中一切资本的程序

强大的可扩展性。ASP具有强大的扩展性,可以实现与多种网络、硬件设备的连接:通过专用的通讯线路远程接入企业;通过远程拨号服务器为远程拨号客户提供服务;通过WAP为移动电话互联网客户服务。程序|网页|下载|下载看过一篇关于下载网页中图片的文章,它只能下载以http头的图片,我做了些改善,能够下载网页中的一切毗连资本,并依照网页中的目次布局创建当地目次,寄存资本。

  download.asp?url=你要下载的网页

  download.asp代码以下:
<%
Server.ScriptTimeout=9999
functionSaveToFile(from,tofile)
onerrorresumenext
dimgeturl,objStream,imgs
geturl=trim(from)
Mybyval=getHTTPstr(geturl)
SetobjStream=Server.CreateObject("ADODB.Stream")
objStream.Type=1
objStream.Open
objstream.writeMybyval
objstream.SaveToFiletofile,2
objstream.Close()
setobjstream=nothing
iferr.number<>0thenerr.Clear
endfunction

functiongeturlencodel(byvalurl)中文文件名转换
Dimi,code
geturlencodel=""
iftrim(Url)=""thenexitfunction
fori=1tolen(Url)
code=Asc(mid(Url,i,1))
ifcode<0Thencode=code+65536
Ifcode>255Then
geturlencodel=geturlencodel&"%"&Left(Hex(Code),2)&"%"&Right(Hex(Code),2)
else
geturlencodel=geturlencodel&mid(Url,i,1)
endif
next
endfunction
functiongetHTTPPage(url)
onerrorresumenext
dimhttp
sethttp=Server.createobject("Msxml2.XMLHTTP")
Http.open"GET",url,false
Http.send()
ifHttp.readystate<>4thenexitfunction
getHTTPPage=bytes2BSTR(Http.responseBody)
sethttp=nothing
iferr.number<>0thenerr.Clear
endfunction

Functionbytes2BSTR(vIn)
dimstrReturn
dimi,ThisCharCode,NextCharCode
strReturn=""
Fori=1ToLenB(vIn)
ThisCharCode=AscB(MidB(vIn,i,1))
IfThisCharCode<&H80Then
strReturn=strReturn&Chr(ThisCharCode)
Else
NextCharCode=AscB(MidB(vIn,i+1,1))
strReturn=strReturn&Chr(CLng(ThisCharCode)*&H100+CInt(NextCharCode))
i=i+1
EndIf
Next
bytes2BSTR=strReturn
EndFunction

functiongetFileName(byvalfilename)
ifinstr(filename,"/")>0then
fileExt_a=split(filename,"/")
getFileName=lcase(fileExt_a(ubound(fileExt_a)))
ifinstr(getFileName,"?")>0then
getFileName=left(getFileName,instr(getFileName,"?")-1)
endif
else
getFileName=filename
endif
endfunction

functiongetHTTPstr(url)
onerrorresumenext
dimhttp
sethttp=server.createobject("MSXML2.XMLHTTP")
Http.open"GET",url,false
Http.send()
ifHttp.readystate<>4thenexitfunction
getHTTPstr=Http.responseBody
sethttp=nothing
iferr.number<>0thenerr.Clear
endfunction


FunctionCreateDIR(ByValLocalPath)创建目次的程序,假如有多级目次,则一级一级的创立
 OnErrorResumeNext
 LocalPath=Replace(LocalPath,"","/")
 SetFileObject=server.CreateObject("Scripting.FileSystemObject")
 patharr=Split(LocalPath,"/")
 path_level=UBound(patharr)
 ForI=0Topath_level
  IfI=0Thenpathtmp=patharr(0)&"/"Elsepathtmp=pathtmp&patharr(I)&"/"
   cpath=Left(pathtmp,Len(pathtmp)-1)
  IfNotFileObject.FolderExists(cpath)ThenFileObject.CreateFoldercpath
 Next
 SetFileObject=Nothing
 IfErr.Number<>0Then
  CreateDIR=False
  Err.Clear
 Else
  CreateDIR=True
 EndIf
EndFunction

functionGetfileExt(byvalfilename)
 fileExt_a=split(filename,".")
 GetfileExt=lcase(fileExt_a(ubound(fileExt_a)))
endfunction

functiongetvirtual(str,path,urlhead)
 ifleft(str,7)="http://"then
  url=str
 elseifleft(str,1)="/"then
  start=instrRev(str,"/")
  ifstart=1then
   url="/"
  else
   url=left(str,start)
  endif
  url=urlhead&url
  elseifleft(str,3)="../"then
  str1=mid(str,inStrRev(str,"../")+2)
  ar=split(str,"../")
  lv=ubound(ar)+1
  ar=split(path,"/")
  url="/"
  fori=1to(ubound(ar)-lv)
   url=url&ar(i)
  next
  url=url&str1
  url=urlhead&url
 else
  url=urlhead&str
 endif
 getvirtual=url
endfunction
示例代码
dimdlpath

virtual="/downweb/"
truepath=server.MapPath(virtual)
ifrequest("url")<>""then
 url=request("url")
 fn=getFileName(url)
 urlhead=left(url,(instr(replace(url,"//",""),"/")+1))
 urlpath=replace(left(url,instrRev(url,"/")),urlhead,"")
 strContent=getHTTPPage(url)
 mystr=strContent
 SetobjRegExp=NewRegexp
 objRegExp.IgnoreCase=True
 objRegExp.Global=True
 objRegExp.Pattern="(src|href)=.[^>]+?"
 SetMatches=objRegExp.Execute(strContent)
 ForEachMatchinMatches
  str=Match.Value
  str=replace(str,"src=","")
  str=replace(str,"href=","")
  str=replace(str,"""","")
 str=replace(str,"","")
filename=GetfileName(str)
  getRet=getVirtual(str,urlpath,urlhead)
  temp=Replace(getRet,"//","**")
  start=instr(temp,"/")
  endt=instrRev(temp,"/")-start+1
  ifstart>0then
   repl=virtual&mid(temp,start)&""
   response.Writerepl&"<br>"
   mystr=Replace(mystr,str,repl)

  dir=</p>asp对于服务器的要求较高,一般的服务器如果访问量一大就垮了,不得不重启。

柔情似水 发表于 2015-1-20 11:52:00

多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。

老尸 发表于 2015-1-20 14:03:51

作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。

小魔女 发表于 2015-1-22 06:16:56

以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。

因胸联盟 发表于 2015-1-25 17:59:18

学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:

灵魂腐蚀 发表于 2015-1-26 05:28:37

ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。

谁可相欹 发表于 2015-2-4 13:13:33

ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。  因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。

admin 发表于 2015-2-9 23:12:41

最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。

蒙在股里 发表于 2015-2-28 04:34:13

在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。

活着的死人 发表于 2015-3-9 20:59:34

还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。

金色的骷髅 发表于 2015-3-17 01:08:54

接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。

精灵巫婆 发表于 2015-3-23 10:38:31

Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")
页: [1]
查看完整版本: ASP教程之用ASP编写下载网页中一切资本的程序