学院首页 软件应用 编程开发 创意设计 认证培训 软件论坛
ASP ASP.NET PHP JSP SQL MYSQL Java VB

您的位置:学院 >> 编程开发 >> ASP >> 用ASP编写下载网页中所有资源的程序


用ASP编写下载网页中所有资源的程序


  看过一篇关于下载网页中图片的文章,它只能下载以http头的图片,我做了些改进,可以下载网页中的所有连接资源,并按照网页中的目录结构建立本地目录,存放资源。

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

  download.asp代码如下:

<%
Server.ScriptTimeout=9999
function SaveToFile(from,tofile)
on error resume next
dim geturl,objStream,imgs
geturl=trim(from)
Mybyval=getHTTPstr(geturl)
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type =1
objStream.Open
objstream.write Mybyval
objstream.SaveToFile tofile,2
objstream.Close()
set objstream=nothing
if err.number<>0 then err.Clear
end function

function geturlencodel(byval url)'中文文件名转换
Dim i,code
geturlencodel=""
if trim(Url)="" then exit function
for i=1 to len(Url)
code=Asc(mid(Url,i,1))
if code<0 Then code = code + 65536
If code>255 Then
geturlencodel=geturlencodel&"%"&Left(Hex(Code),2)&"%"&Right(Hex(Code),2)
else
geturlencodel=geturlencodel&mid(Url,i,1)
end if
next
end function
function getHTTPPage(url)
on error resume next
dim http
set http=Server.createobject("Msxml2.XMLHTTP")
Http.open "GET",url,false
Http.send()
if Http.readystate<>4 then exit function
getHTTPPage=bytes2BSTR(Http.responseBody)
set http=nothing
if err.number<>0 then err.Clear
end function

Function bytes2BSTR(vIn)
dim strReturn
dim i,ThisCharCode,NextCharCode
strReturn = ""
For i = 1 To LenB(vIn)
ThisCharCode = AscB(MidB(vIn,i,1))
If ThisCharCode < &H80 Then
strReturn = strReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn,i+1,1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
i = i + 1
End If
Next
bytes2BSTR = strReturn
End Function

function getFileName(byval filename)
if instr(filename,"/")>0 then
fileExt_a=split(filename,"/")
getFileName=lcase(fileExt_a(ubound(fileExt_a)))
if instr(getFileName,"?")>0 then
getFileName=left(getFileName,instr(getFileName,"?")-1)
end if
else
getFileName=filename
end if
end function

function getHTTPstr(url)
on error resume next
dim http
set http=server.createobject("MSXML2.XMLHTTP")
Http.open "GET",url,false
Http.send()
if Http.readystate<>4 then exit function
getHTTPstr=Http.responseBody
set http=nothing
if err.number<>0 then err.Clear
end function


Function CreateDIR(ByVal LocalPath) '建立目录的程序,如果有多级目录,则一级一级的创建
 On Error Resume Next
 LocalPath = Replace(LocalPath, "\", "/")
 Set FileObject = server.CreateObject("Scripting.FileSystemObject")
 patharr = Split(LocalPath, "/")
 path_level = UBound(patharr)
 For I = 0 To path_level
  If I = 0 Then pathtmp = patharr(0) & "/" Else pathtmp = pathtmp & patharr(I) & "/"
   cpath = Left(pathtmp, Len(pathtmp) - 1)
  If Not FileObject.FolderExists(cpath) Then FileObject.CreateFolder cpath
 Next
 Set FileObject = Nothing
 If Err.Number <> 0 Then
  CreateDIR = False
  Err.Clear
 Else
  CreateDIR = True
 End If
End Function

function GetfileExt(byval filename)
 fileExt_a=split(filename,".")
 GetfileExt=lcase(fileExt_a(ubound(fileExt_a)))
end function

function getvirtual(str,path,urlhead)
 if left(str,7)="http://" then
  url=str
 elseif left(str,1)="/" then
  start=instrRev(str,"/")
  if start=1 then
   url="/"
  else
   url=left(str,start)
  end if
  url=urlhead&url
  elseif left(str,3)="http://www.zhujiangroad.com/" then
  str1=mid(str,inStrRev(str,"http://www.zhujiangroad.com/")+2)
  ar=split(str,"http://www.zhujiangroad.com/")
  lv=ubound(ar)+1
  ar=split(path,"/")
  url="/"
  for i=1 to (ubound(ar)-lv)
   url=url&ar(i)
  next
  url=url&str1
  url=urlhead&url
 else
  url=urlhead&str
 end if
 getvirtual=url
end function
'示例代码
dim dlpath

virtual="/downweb/"
truepath=server.MapPath(virtual)
if request("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
 Set objRegExp = New Regexp
 objRegExp.IgnoreCase = True
 objRegExp.Global = True
 objRegExp.Pattern = "(src|href)=.[^\>]+? "
 Set Matches =objRegExp.Execute(strContent)
 For Each Match in Matches
  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
  if start>0 then
   repl=virtual&mid(temp,start)&" "
   'response.Write repl&"<br>"
   mystr=Replace(mystr,str,repl)

  dir=mid(temp,start,endt)
  temp=truepath&Replace(dir,"/","\")
  CreateDir(temp)
  'response.Write getRet&"||"&temp&filename&"<br><br>"
  SaveToFile getRet,temp&filename
 end if
Next
set Matches=nothing
end if

%>  


技术文章快速查找

栏目导航
软件应用
·操作系统 ·杀毒防黑 ·应用软件
·聊天软件 ·网络软件  
Web开发
·ASP ·JavaScript ·CGI
·JSP ·VbScript ·Web服务器
·PHP ·XML  
开发语言
·VB ·VC ·ASP.NET
·Java ·C/C++ ·Delphi
数据库开发
·MySQL ·SQL/Access ·PowerBuilder
·Oracle ·DB2  
网站设计
·Flash ·Dreamweaver ·HTML/CSS
·Fireworks ·FrontPage  
平面设计
·Photoshop ·CorelDraw ·AutoCAD
·FreeHand ·Illustrator ·3DsMAX
媒体动画
·Director ·Authorware ·Maya
·视频处理    


相关软件 产品库推荐
·笔记本 ·台式机 ·服务器
·数码相机 ·手机 ·GPS
·DV摄像机 ·MP3 ·MP4
·CPU ·硬盘 ·内存
·主板 ·显卡 ·显示器
·打印机 ·投影机 ·路由器

还没人留言,抢个先,哈哈!
对"用ASP编写下载网页中所有资源的程序"的评论 - 快速回贴
内容:
  [完成后可按Ctrl+Enter发布]

百度中 用ASP编写下载网页中所有资源的程序 相关内容
Google搜索中 用ASP编写下载网页中所有资源的程序 相关内容
雅虎中 用ASP编写下载网页中所有资源的程序 相关内容
Sogou搜索中 用ASP编写下载网页中所有资源的程序 相关内容

相关软件 最新回复帖子:

·Windows Vista 中卸载软件的不同方式
·没有mysql支持时的替代方案
·一个可以发送附件及HTML格式邮件的PHP类
·AutoCAD打造精致三维鸟笼实例详解
·Photoshop自定义水晶字特效样式
·AutoCAD三维基础实例教程
·PS为黑背景长发美女照片抠图换背
·用Photoshop自制个性摩托车贴花小经验
·轻松几步将美女照片处理为手工素描
·巧用Photoshop画笔轻松绘制创意特效


  相关软件 用ASP编写下载网页中所有资源的程序相关文章
用ASP编程实现网络内容快速查找 IIS HTTP500内部错误解决办法
ASP实用技巧:强制刷新和判断文件地址 ASP木马Webshell安全解决办案
ASP程序中提供在线文章翻译功能 在ASP应用程序中加入智能搜索
ASP无组件上传进度条解决方案 ASP中实现分页显示的七种武器
ASP开发中数据库文件调用的捷径 巧用缓存提高ASP应用程序的性能
SQL注入天书之ASP注入漏洞全接触 ASP中也能解压缩rar文件
浅谈ASP中Web页面间的数据传递 用ASP设计收发文管理系统
ASP万用分页程序 用ASP编写网站流量统计系统
ASP数据库编程SQL常用技巧 加速ASP程序的显示速度
浅析ASP内置组件 ASP+SQL Server构建网页防火墙