1. Dapatkan alamat gambar di halaman aslinya.
<%
fungsi PicStr(str)
Setel objRegExp = Regexp Baru 'Setel objek konfigurasi
objRegExp.IgnoreCase = Benar 'Abaikan kasus
objRegExp.Global = True 'Disetel untuk pencarian teks lengkap
objRegExp.Pattern = <IMG.+?> 'Untuk memastikan bahwa alamat gambar dapat diambil secara akurat, ini dibagi menjadi dua tingkat konfigurasi: pertama temukan tag <IMG> di dalamnya, lalu ambil alamat gambar di dalamnya. Fungsi getimgs di baliknya adalah untuk mengimplementasikan Fungsional yang terakhir.
strs=memangkas(str)
Setel Kecocokan =objRegExp.Execute(strs) 'Mulai jalankan konfigurasi
Untuk Setiap Pertandingan dalam Pertandingan
PicStr = PicStr &getimgs( Match.Value ) 'Lakukan pencocokan putaran kedua
Berikutnya
'Semua gambar seperti ini alamat src=http://gambar, sehingga Anda bisa mendapatkan alamat gambar persis seperti ini
fungsi akhir
fungsi getimgs(str)
dapatkan gambar=
Setel objRegExp1 = Regexp Baru
objRegExp1.IgnoreCase = Benar
objRegExp1.Global = Benar
objRegExp1.Pattern = http://.+? 'Dapatkan alamat di dalamnya
atur mm=objRegExp1.Execute(str)
Untuk Setiap Pertandingan1 dalam mm
getimgs=getimgs&||&left(Match1.Value,len(Match1.Value)-1) 'Rangkai alamat-alamat di dalamnya untuk digunakan nanti
Berikutnya
fungsi akhir
%>
Kedua, unduh gambar dan simpan di server.
<%
fungsi getHTTPage(url)
pada kesalahan lanjutkan berikutnya
redupkan http
set http=server.createobject(MSXML2.XMLHTTP) 'Gunakan metode xmlhttp untuk mendapatkan konten gambar
Http.buka GET,url,false
Http.kirim()
jika Http.readystate<>4 lalu
fungsi keluar
berakhir jika
getHTTPage=Http.responseBody
atur http=tidak ada
jika err.number<>0 maka err.Clear
fungsi akhir
'Isi gambar sudah didapat dan perlu disimpan. Kesan bisa dilakukan dengan FSO, tapi nyatanya tidak berfungsi. Dengan cara ini program penyimpanan akan error karena FSO tidak mendukung streaming file, jadi kita harus memanggil Objek lain: ADO.STREM. Proses spesifiknya adalah sebagai berikut:
fungsi simpan gambar (dari, ke file)
redupkan geturl,objStream,imgs
geturl=trim(dari)
imgs=gethttppage(geturl)'Proses mendapatkan konten spesifik gambar
Setel objStream = Server.CreateObject(ADODB.Stream)' Untuk membuat objek ADODB.Stream, diperlukan ADO 2.5 atau lebih tinggi
objStream.Type =1'Buka dalam mode biner
objStream.Buka
objstream.write imgs' menulis konten string ke dalam buffer
objstream.SaveToFile server.mappath(tofile),2'-tulis konten yang di-buffer ke file
objstream.Close()'Tutup objeknya
atur objstream=tidak ada
fungsi akhir
'Jadi gunakan saja loop untuk menyimpan semua gambar di alamat yang baru saja diperoleh. Proses spesifiknya adalah sebagai berikut:
arrimg=split(PicStr(str),||) 'Pisahkan string dan dapatkan daftar alamat di dalamnya
allimg=
gambar baru=
untuk i=1 hingga ubound(arrimg)
if arrimg(i)<> dan instr(allimg,arrimg(i))<1 lalu 'Lihat apakah gambar ini sudah diunduh
fname=baseurl&cstr(i&mid(arrimg(i),instrrev(arrimg(i),.)))
saveimage(arrimg(i),fname)' berfungsi untuk menyimpan alamat, lihat prosesnya diatas
allimg=allimg&||&arrimg(i) 'Rangkaian kembali alamat gambar yang disimpan untuk menentukan alamat yang akan diganti
newimg=newimg&||&fname 'String kembali alamat lokal
berakhir jika
Berikutnya
'Langkah ketiga adalah mengganti alamat asli. Proses spesifiknya adalah sebagai berikut:
arrnew=split(newimg,||) 'Dapatkan daftar alamat gambar asli
arrall=split(allimg,||) 'Dapatkan daftar alamat gambar yang disimpan
for i=1 to ubound(arrnew) 'Jalankan loop untuk menggantikan alamat asli
strs=ganti(str,arrall(i),arrnew(i))
Berikutnya
%>