ASP教程之教你一次下载网页中的一切资本(ASP)
当然了,现在国内CRM厂商的产品与其说是CRM,但从至少从我的角度分析上来看,充其量只是一个大型的进销存而已了,了解尚浅,不够胆详评,这里只提技术问题网页|下载看过一篇关于下载网页中图片的文章,它只能下载以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.number0thenerr.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.readystate4thenexitfunction
getHTTPPage=bytes2BSTR(Http.responseBody)
sethttp=nothing
iferr.number0thenerr.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.readystate4thenexitfunction
getHTTPstr=Http.responseBody
sethttp=nothing
iferr.number0thenerr.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.Number0Then
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=mid(temp,start,endt)
temp=truepath&Replace(dir,"/","")
CreateDir(temp)
response.WritegetRet&"||"&temp&filename&"<br><br>"
SaveToFilegetRet,temp&filename
endif
Next
setMatches=nothing
endif
%>ASP在国内异常流行,因为国内大多使用的是盗版的Windows和盗版的SQLServer,而ASP+COM+SQLServer实际上也是一种不错的搭配,其性能也不输于PHP+MYSQL,特别是Windows系统和SQLServer都有图形界面,比APACHE和MYSQL易于维护,因此对于不重视知识产权的国家来说也是一种不错的选择。 ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。 因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。 学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。 运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。 我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标. 他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。 ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。 因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。 以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。 ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。
页:
[1]