ฉันอ่านบทความเกี่ยวกับการดาวน์โหลดรูปภาพจากหน้าเว็บ สามารถดาวน์โหลดรูปภาพด้วยส่วนหัว http เท่านั้น ฉันสามารถดาวน์โหลดทรัพยากรการเชื่อมต่อทั้งหมดในหน้าเว็บและสร้างไดเร็กทอรีท้องถิ่นตามโครงสร้างไดเร็กทอรีในหน้าเว็บ เพื่อจัดเก็บทรัพยากร
download.asp?url=รหัส download.asp ของ
หน้าเว็บที่คุณต้องการดาวน์โหลด
เป็นดังนี้:<%
Server.ScriptTimeout=9999
ฟังก์ชั่น SaveToFile(จาก,tofile)
เมื่อเกิดข้อผิดพลาดดำเนินการต่อต่อไป
geturl สลัว, objStream, imgs
geturl=ตัดแต่ง(จาก)
Mybyval=getHTTPstr(geturl)
ตั้ง objStream = Server.CreateObject("ADODB.Stream")
objStream.Type =1
objStream.เปิด
objstream.write Mybyval
objstream.SaveToFile tofile,2
objstream.ปิด()
ตั้งค่า objstream=nothing
ถ้า err.number<>0 แสดงว่า err.Clear
ฟังก์ชั่น end
ฟังก์ชั่น geturlencodel (byval url) 'การแปลงชื่อไฟล์ภาษาจีน
ติ่มซำโค้ด
geturlencodel=""
ถ้า trim(Url)="" ให้ออกจากฟังก์ชัน
สำหรับ i=1 ถึง len (Url)
รหัส=Asc(กลาง(Url,i,1))
ถ้ารหัส <0 ดังนั้นรหัส = รหัส + 65536
ถ้ารหัส>255 แล้ว
geturlencodel=geturlencodel&"%"&ซ้าย(เลขฐานสิบหก(รหัส),2)&"%"&ขวา(เลขฐานสิบหก(รหัส),2)
อื่น
geturlencodel=geturlencodel&กลาง(Url,i,1)
สิ้นสุดถ้า
ต่อไป
ฟังก์ชั่นสิ้นสุด
ฟังก์ชั่น getHTTPage(url)
เมื่อเกิดข้อผิดพลาดดำเนินการต่อต่อไป
http สลัว
ตั้งค่า http=Server.createobject("Msxml2.XMLHTTP")
Http.open "GET",url,false
Http.ส่ง()
ถ้า Http.readystate<4> ให้ออกจากฟังก์ชัน
getHTTPPage=bytes2BSTR(Http.responseBody)
ตั้งค่า http=nothing
ถ้า err.number<>0 แสดงว่า err.Clear
ฟังก์ชันสิ้นสุด
ฟังก์ชัน bytes2BSTR(vIn)
strReturn สลัว
หรี่ฉัน, 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(ชื่อไฟล์,"/")>0 แล้ว
fileExt_a=split(ชื่อไฟล์,"/")
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.ส่ง()
ถ้า Http.readystate<4> ให้ออกจากฟังก์ชัน
getHTTPstr=Http.responseBody
ตั้งค่า http=nothing
ถ้า err.number<>0 แสดงว่า err.Clear
ฟังก์ชั่นสิ้นสุด
ฟังก์ชั่น CreateDIR(ByVal LocalPath) 'โปรแกรมสำหรับสร้างไดเร็กทอรี หากมีไดเร็กทอรีหลายระดับ ให้สร้างทีละระดับเมื่อเกิดข้อผิดพลาดต่อ ถัดไป
LocalPath = แทนที่ (LocalPath, "", "/")
ตั้งค่า FileObject = server.CreateObject("Scripting.FileSystemObject")
patharr = แยก (LocalPath, "/")
path_level = UBound(พาธาร์)
สำหรับ I = 0 ถึง path_level
ถ้าฉัน = 0 ดังนั้น pathtmp = patharr(0) & "/" อื่น ๆ pathtmp = pathtmp & patharr(I) & "/"
cpath = ซ้าย (pathtmp, Len (pathtmp) - 1)
ถ้าไม่ใช่ FileObject.FolderExists(cpath) ดังนั้น FileObject.CreateFolder cpath
ต่อไป
ตั้งค่า FileObject = ไม่มีเลย
ถ้า Err.Number <> 0 แล้ว
CreateDIR = เท็จ
ผิดพลาด.เคลียร์
อื่น
CreateDIR = จริง
สิ้นสุดถ้า
End Function
GetfileExt (ชื่อไฟล์ byval)
fileExt_a=split(ชื่อไฟล์,".")
GetfileExt=lcase(fileExt_a(ubound(fileExt_a)))
ฟังก์ชั่นสิ้นสุด
ฟังก์ชั่น getvirtual (str, เส้นทาง, urlhead)
ถ้า left(str,7)="http://" แล้ว
URL=str
elseif left(str,1)="/" แล้ว
start=instrRev(str,"/")
ถ้า start=1 แล้ว
URL = "/"
อื่น
url=left(str,เริ่มต้น)
สิ้นสุดถ้า
url=urlhead&url
elseif left(str,3)="../" แล้ว
str1=mid(str,inStrRev(str,"../")+2)
ar=split(str,"../")
lv=ubound(ar)+1
ar=split(เส้นทาง,"/")
URL = "/"
สำหรับ i=1 ถึง (ubound(ar)-lv)
url=url&ar(i)
ต่อไป
url=url&str1
url=urlhead&url
อื่น
url=urlhead&str
สิ้นสุดถ้า
getvirtual=url
ฟังก์ชั่นสิ้นสุด
'โค้ดตัวอย่าง
dlpath เสมือน
= "/ downweb/"
truepath=server.MapPath (เสมือน)
ถ้า request("url")<>< "" แล้ว
url=คำขอ("url")
fn=getFileName(URL)
urlhead=left(url,(instr(แทนที่(url,"//",""),"/")+1))
urlpath=แทนที่(ซ้าย(url,instrRev(url,"/")),urlhead,"")
strContent = getHTTPPage(url)
mystr=strContent
ตั้งค่า objRegExp = Regexp ใหม่
objRegExp.IgnoreCase = จริง
objRegExp.Global = จริง
objRegExp.Pattern = "(src|href)=.[^>]+? "
ตั้งค่าการจับคู่ =objRegExp.Execute(strContent)
สำหรับการแข่งขันแต่ละครั้งในการแข่งขัน
str=Match.Value
str=แทนที่(str,"src=","")
str=แทนที่(str,"href=","")
str=แทนที่(str,"""","")
str=แทนที่(str,"'","")
ชื่อไฟล์=GetfileName(str)
getRet=getVirtual(str,urlpath,urlhead)
temp=Replace(getRet,"//", "**")
start=instr(อุณหภูมิ,"/")
endt=instrRev(temp,"/")-start+1
ถ้าเริ่ม>0 แล้ว
repl=virtual&mid(อุณหภูมิ,เริ่มต้น)&" "
'response.Write repl&"<br>"
mystr=แทนที่(mystr,str,repl)
dir=mid(temp,start,endt)
temp=truepath&แทนที่(dir,"/", "")
CreateDir(ชั่วคราว)
'response.Write getRet&"||"&temp&filename&"<br><br>"
SaveToFile getRet,temp&ชื่อไฟล์
สิ้นสุดถ้า
ต่อไป
ตั้งค่าการจับคู่=ไม่มีอะไร
สิ้นสุดถ้า
%>