قرأت مقالًا عن تنزيل الصور من صفحات الويب. يمكنه فقط تنزيل الصور برأس http. ويمكنه تنزيل جميع موارد الاتصال في صفحة الويب وإنشاء دليل محلي وفقًا لبنية الدليل في صفحة الويب لتخزين الموارد.
رمز download.asp الخاص
بصفحة الويب التي تريد تنزيلها
هو كما يلي<%
Server.ScriptTimeout=9999
وظيفة SaveToFile (من، tofile)
على خطأ استئناف المقبل
خافت geturl،objStream،imgs
geturl = تقليم (من)
Mybyval=getHTTPstr(geturl)
تعيين objStream = Server.CreateObject("ADODB.Stream")
objStream.Type =1
objStream.Open
objstream.write Mybyval
objstream.SaveToFile إلى الملف،2
objstream.Close()
تعيين objstream = لا شيء
إذا كان err.number<>0 ثم err.Clear
النهاية
geturlencodel(byval url)'تحويل اسم الملف الصيني
خافت أنا، رمز
جيتورلينكوديل = ""
إذا تقليم (Url) = "" ثم اخرج من الوظيفة
لأني = 1 إلى لين (Url)
كود = تصاعدي (منتصف (Url، ط، 1))
إذا كود <0 ثم كود = كود + 65536
إذا كان الكود> 255 ثم
geturlencodel=geturlencodel&"%"&Left(Hex(Code),2)&"%"&Right(Hex(Code),2)
آخر
geturlencodel=geturlencodel&mid(Url,i,1)
نهاية إذا
التالي
وظيفة النهاية
وظيفة getHTTPage(url)
على خطأ استئناف المقبل
خافت http
تعيين http=Server.createobject("Msxml2.XMLHTTP")
Http.open "GET"، URL، خطأ
المتشعب.إرسال ()
إذا كان Http.readystate<>4 ثم قم بالخروج من الوظيفة
getHTTPPage=bytes2BSTR(Http.responseBody)
تعيين http=لا شيء
إذا كان err.number<>0 ثم err.Clear
وظيفة النهاية
وظيفة bytes2BSTR(vIn)
عودة خافتة
خافت أنا، ThisCharCode، NextCharCode
strReturn = ""
لأني = 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=split(اسم الملف،"/")
getFileName=lcase(fileExt_a(ubound(fileExt_a)))
إذا instr(getFileName,"؟")>0 إذن
getFileName=left(getFileName,instr(getFileName,"؟")-1)
نهاية إذا
آخر
getFileName=filename
نهاية إذا
وظيفة النهاية
الدالة getHTTPstr(url)
على خطأ استئناف المقبل
خافت http
تعيين http=server.createobject("MSXML2.XMLHTTP")
Http.open "GET"، URL، خطأ
المتشعب.إرسال ()
إذا كان Http.readystate<>4 ثم قم بالخروج من الوظيفة
getHTTPstr=Http.responseBody
تعيين http=لا شيء
إذا كان err.number<>0 ثم err.Clear
وظيفة النهاية
الوظيفة CreateDIR(ByVal LocalPath) 'برنامج لإنشاء دليل إذا كان هناك مستويات متعددة من الدلائل، فقم بإنشائها واحدًا تلو الآخر.
على خطأ استئناف التالي
LocalPath = استبدال (LocalPath، ""، "/")
تعيين FileObject = server.CreateObject("Scripting.FileSystemObject")
Patharr = سبليت (LocalPath، "/")
path_level = UBound(patharr)
لأني = 0 إلى مستوى المسار
إذا كنت = 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 = صحيح
نهاية إذا
وظيفة النهاية
وظيفة GetfileExt (اسم الملف byval)
fileExt_a=split(اسم الملف،".")
GetfileExt=lcase(fileExt_a(ubound(fileExt_a)))
النهاية
getvirtual (str، path، urlhead)
إذا بقي (str،7) = "http://" ثم
url=str
elseif left(str,1)="/" إذن
ابدأ =instrRev(str،"/")
إذا كانت البداية=1 إذن
عنوان URL = "/"
آخر
URL = اليسار (شارع، بداية)
نهاية إذا
url=urlhead&url
وإلا إذا غادر (str،3) = "../" ثم
str1=mid(str,inStrRev(str,"../")+2)
ar=split(str,"../")
lv=ubound(ar)+1
ar=سبليت(المسار"/")
عنوان URL = "/"
لأني = 1 إلى (ubound(ar)-lv)
url=url&ar(i)
التالي
url=url&str1
url=urlhead&url
آخر
url=urlhead&str
نهاية إذا
getvirtual=url
وظيفة النهاية
'رمز المثال
خافت dlpath
الظاهري = "/downweb/"
truepath=server.MapPath(virtual)
إذا كان الطلب ("url")<> "" إذن
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
تعيين objRegExp = New Regexp
objRegExp.IgnoreCase = صحيح
objRegExp.Global = صحيح
objRegExp.Pattern = "(src|href)=.[^>]+? "
تعيين التطابقات =objRegExp.Execute(strContent)
لكل مباراة في المباريات
str=Match.Value
str=replace(str،"src = "")
str=replace(str،"href =،"")
str=replace(str،""""،"")
str=replace(str،"'"،")
اسم الملف = GetfileName (شارع)
getRet=getVirtual(str,urlpath,urlhead)
temp=Replace(getRet,"//"،"**")
ابدأ = instr (درجة الحرارة، "/")
endt=instrRev(temp,"/")-start+1
إذا ابدأ> 0 ثم
repl=virtual&mid(temp,start)&" "
'response.اكتب الرد&"<br>"
mystr=Replace(mystr,str,repl)
dir=mid(temp,start,endt)
درجة الحرارة = truepath&Replace(دير،"/"،"،")
كريتدير (مؤقت)
'response.Write getRet&"||"&temp&filename&"<br><br>"
SaveToFile getRet ودرجة الحرارة واسم الملف
نهاية إذا
التالي
تعيين التطابقات = لا شيء
نهاية إذا
%>