1. احصل على عنوان الصورة على الصفحة الأصلية.
<%
الدالة PicStr(str)
Set objRegExp = New Regexp "تعيين كائن التكوين."
objRegExp.IgnoreCase = صحيح 'تجاهل حالة الأحرف
objRegExp.Global = True 'تعيين للبحث عن النص الكامل
objRegExp.Pattern = <IMG.+?> 'من أجل ضمان إمكانية استرجاع عنوان الصورة بدقة، تم تقسيمها إلى مستويين من التكوين: ابحث أولاً عن علامة <IMG> بالداخل، ثم استرد عنوان الصورة بالداخل. وظيفة getimgs وراءها هي تنفيذ الوظيفة الأخيرة.
سترس = تقليم (شارع)
Set Matches =objRegExp.Execute(strs) 'ابدأ في تنفيذ التكوين
لكل مباراة في المباريات
PicStr = PicStr &getimgs( Match.Value ) 'قم بإجراء الجولة الثانية من المطابقة
التالي
'جميع الصور تشبه هذا src=http://picture title، لذا يمكنك الحصول على عنوان الصورة الدقيق مثل هذا
وظيفة النهاية
دالة getimgs(str)
getimgs=
قم بتعيين objRegExp1 = New Regexp
objRegExp1.IgnoreCase = صحيح
objRegExp1.Global = صحيح
objRegExp1.Pattern = http://.+? 'احصل على العنوان بالداخل
تعيين مم=objRegExp1.Execute(str)
لكل مباراة1 بالملليمتر
getimgs=getimgs&||&left(Match1.Value,len(Match1.Value)-1) 'قم بربط العناوين الموجودة بالداخل معًا لاستخدامها لاحقًا
التالي
وظيفة النهاية
%>
ثانيا، قم بتنزيل الصورة وحفظها على الخادم.
<%
وظيفة getHTTPage(url)
على خطأ استئناف المقبل
خافت http
تعيين http=server.createobject(MSXML2.XMLHTTP) 'استخدم طريقة xmlhttp للحصول على محتوى الصورة
Http.open الحصول على، URL، خطأ
المتشعب.إرسال ()
إذا Http.readystate<>4 ثم
وظيفة الخروج
نهاية إذا
getHTTPPage=Http.responseBody
تعيين http=لا شيء
إذا كان err.number<>0 ثم err.Clear
وظيفة النهاية
"لقد تم الحصول على محتوى الصورة ويجب حفظه، وهذا يعطي انطباعًا بأنه يمكن القيام بذلك باستخدام FSO، لكنه في الواقع لا يعمل. بهذه الطريقة، سوف يحدث خطأ في برنامج الحفظ لأن FSO لا يدعم البث الملفات، لذلك يتعين علينا استدعاء كائن آخر: ADO.STREM. العملية المحددة هي كما يلي:
وظيفة حفظ الصورة (من، إلى الملف)
خافت geturl،objStream،imgs
geturl = تقليم (من)
imgs=gethttppage(geturl)'عملية الحصول على المحتوى المحدد للصورة
تعيين objStream = Server.CreateObject(ADODB.Stream)' لإنشاء كائن ADODB.Stream، مطلوب ADO 2.5 أو أعلى
objStream.Type =1'مفتوح في الوضع الثنائي
objStream.Open
يكتب objstream.write imgs محتوى السلسلة في المخزن المؤقت
objstream.SaveToFile server.mappath(tofile)،2'-اكتب المحتوى المخزن في الملف
objstream.Close()'أغلق الكائن
تعيين objstream = لا شيء
وظيفة النهاية
"لذا فقط استخدم حلقة لحفظ جميع الصور الموجودة في العنوان الذي تم الحصول عليه للتو. العملية المحددة هي كما يلي:
arrimg=split(PicStr(str),||) 'قم بتقسيم السلسلة واحصل على قائمة العناوين بالداخل
أليمج=
newimg=
لأني=1 إلى ubound(arrimg)
إذا arrimg(i)<> وinstr(allimg,arrimg(i))<1 ثم "معرفة ما إذا كان قد تم تنزيل هذه الصورة أم لا"
fname=baseurl&cstr(i&mid(arrimg(i),instrrev(arrimg(i,.)))
saveimage(arrimg(i),fname)' لحفظ العنوان، راجع العملية أعلاه
allimg=allimg&||&arrimg(i) 'إعادة سلسلة عناوين الصور المحفوظة لتحديد العنوان الذي سيتم استبداله
newimg=newimg&||&fname 'إعادة سلسلة العنوان المحلي
نهاية إذا
التالي
'الخطوة الثالثة هي استبدال العنوان الأصلي. العملية المحددة هي كما يلي:
arrnew=split(newimg,||) 'احصل على قائمة عناوين الصورة الأصلية
arrall=split(allimg,||) 'احصل على قائمة عناوين الصور المحفوظة
for i=1 to ubound(arrnew) 'قم بتنفيذ حلقة لاستبدال العنوان الأصلي
strs=replace(strs,arrall(i),arrnew(i))
التالي
%>