웹 페이지에서 이미지를 다운로드하는 방법에 대한 기사를 읽었습니다. http 헤더가 있는 이미지만 다운로드할 수 있는데, 웹 페이지의 모든 연결 리소스를 다운로드하고 웹 페이지의 디렉터리 구조에 따라 로컬 디렉터리를 생성할 수 있습니다. 자원을 저장합니다.
다운로드하려는 웹페이지
의 download.asp 코드는
다음과 같습니다<%
Server.ScriptTimeout=9999
함수 SaveToFile(from,tofile)
오류 발생 시 다음 재개
희미한 geturl,objStream,imgs
geturl=트림(from)
Mybyval=getHTTPstr(geturl)
objStream = Server.CreateObject("ADODB.Stream") 설정
objStream.Type =1
objStream.Open
objstream.write Mybyval
objstream.SaveToFile tofile,2
objstream.Close()
objstream=아무것도 설정하지 않음
err.number<>0이면 err.Clear
함수 종료
function geturlencodel(byval url)'중국어 파일 이름 변환
딤 아이,코드
geturlencodel=""
Trim(Url)=""인 경우 함수를 종료합니다.
i=1에서 len(Url)까지
코드=Asc(mid(Url,i,1))
코드 <0이면 코드 = 코드 + 65536
코드>255이면
geturlencodel=geturlencodel&"%"&Left(Hex(코드),2)&"%"&Right(Hex(코드),2)
또 다른
geturlencodel=geturlencodel&mid(Url,i,1)
종료하면
다음
함수 종료
함수 getHTTPage(url)
오류 발생 시 다음 재개
희미한 http
http=Server.createobject("Msxml2.XMLHTTP")를 설정합니다.
Http.open "GET", URL, false
Http.send()
Http.readystate<>4이면 함수를 종료합니다.
getHTTPPage=bytes2BSTR(Http.responseBody)
http=아무것도 설정하지 않음
err.number<>0이면 err.Clear
종료 기능
기능 bytes2BSTR(vIn)
희미한 strReturn
희미한 i,ThisCharCode,NextCharCode
strReturn = ""
i = 1의 경우 LenB(vIn)
ThisCharCode = AscB(MidB(vIn,i,1))
ThisCharCode < &H80이면
strReturn = strReturn & Chr(ThisCharCode)
또 다른
NextCharCode = AscB(MidB(vIn,i+1,1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
나는 = 나는 + 1
종료 조건
다음
bytes2BSTR = strReturn
기능 종료
함수 getFileName(byval 파일 이름)
instr(filename,"/")>0이면
fileExt_a=분할(파일 이름,"/")
getFileName=lcase(fileExt_a(ubound(fileExt_a)))
instr(getFileName,"?")>0이면
getFileName=left(getFileName,instr(getFileName,"?")-1)
종료하면
또 다른
getFileName=파일 이름
종료하면
함수 종료
함수 getHTTPstr(url)
오류 발생 시 다음 재개
희미한 http
http=server.createobject("MSXML2.XMLHTTP")를 설정합니다.
Http.open "GET", URL, false
Http.send()
Http.readystate<>4이면 함수를 종료합니다.
getHTTPstr=Http.responseBody
http=아무것도 설정하지 않음
err.number<>0이면 err.Clear
함수 종료
함수 CreateDIR(ByVal LocalPath) '디렉토리를 생성하는 프로그램입니다. 디렉토리가 여러 레벨인 경우 하나씩 생성합니다.
오류 발생 시 다음 재개
LocalPath = 바꾸기(LocalPath, "", "/")
FileObject = server.CreateObject("Scripting.FileSystemObject") 설정
patharr = 분할(로컬 경로, "/")
path_level = UBound(patharr)
I = 0인 경우 path_level로
I = 0이면 pathtmp = patharr(0) & "/" 그렇지 않으면 pathtmp = pathtmp & patharr(I) & "/"
cpath = 왼쪽(경로tmp, Len(경로tmp) - 1)
FileObject.FolderExists(cpath)가 아닌 경우 FileObject.CreateFolder cpath
다음
FileObject = 없음 설정
Err.Number <> 0이면
CreateDIR = 거짓
Err.Clear
또 다른
CreateDIR = 참
종료 조건
기능 종료
함수 GetfileExt(발행 파일명)
fileExt_a=분할(파일 이름,".")
GetfileExt=lcase(fileExt_a(ubound(fileExt_a)))
끝 함수
function getvirtual(str,path,urlhead)
left(str,7)="http://"이면
URL=str
elseif left(str,1)="/" 그러면
시작=instrRev(str,"/")
start=1이면
URL="/"
또 다른
url=왼쪽(str,시작)
종료하면
url=urlhead&url
elseif left(str,3)="../" 그러면
str1=mid(str,inStrRev(str,"../")+2)
ar=분할(str,"../")
lv=유바운드(ar)+1
ar=분할(경로,"/")
URL="/"
i=1에서 (ubound(ar)-lv)까지
url=url&ar(i)
다음
url=url&str1
url=urlhead&url
또 다른
url=urlhead&str
종료하면
getvirtual=url
함수 종료
'예제 코드
희미한 dlpath
virtual="/downweb/"
truepath=server.MapPath(virtual)
if request("url")<> "" then
url=요청("url")
fn=getFileName(url)
urlhead=left(url,(instr(replace(url,"//",""),"/")+1))
urlpath=replace(왼쪽(url,instrRev(url,"/")),urlhead,"")
strContent = getHTTPPage(url)
mystr=strContent
objRegExp = 새 Regexp 설정
objRegExp.IgnoreCase = 참
objRegExp.Global = 참
objRegExp.Pattern = "(src|href)=.[^>]+? "
일치 항목 설정 =objRegExp.Execute(strContent)
경기의 각 경기에 대해
str=일치.값
str=교체(str,"src=","")
str=교체(str,"href=","")
str=교체(str,"""","")
str=교체(str,"'","")
파일명=GetfileName(str)
getRet=getVirtual(str,urlpath,urlhead)
temp=바꾸기(getRet,"//","**")
시작=instr(임시,"/")
endt=instrRev(임시,"/")-start+1
시작>0이면
repl=virtual&mid(임시,시작)&" "
'response.Write repl&"<br>"
mystr=바꾸기(mystr,str,repl)
dir=mid(temp,start,endt)
temp=truepath&Replace(dir,"/","")
CreateDir(임시)
'response.Write getRet&"||"&temp&filename&"<br><br>"
SaveToFile getRet,임시&파일 이름
종료하면
다음
일치 항목=아무것도 설정하지 않음
종료하면
%>