1. Получите адрес изображения на исходной странице.
<%
функция PicStr(str)
Set objRegExp = New Regexp 'Установить объект конфигурации
objRegExp.IgnoreCase = True 'Игнорировать регистр
objRegExp.Global = True 'Устанавливается полнотекстовый поиск
objRegExp.Pattern = <IMG.+?> 'Чтобы гарантировать, что адрес изображения может быть получен точно, он разделен на два уровня конфигурации: сначала найдите тег <IMG> внутри, а затем получите внутри адрес изображения. Стоящая за ним функция getimgs предназначена для реализации последней функции.
стрс = обрезка (стр)
Set Matches =objRegExp.Execute(strs) 'Начать выполнение конфигурации
За каждый матч в матчах
PicStr = PicStr &getimgs( Match.Value ) 'Выполняем второй раунд сопоставления
Следующий
'Все изображения имеют вид src=http://адрес изображения, поэтому вы можете получить точный адрес изображения следующим образом.
конечная функция
функция getimgs(str)
getimgs=
Установите objRegExp1 = Новое регулярное выражение.
objRegExp1.IgnoreCase = Истина
objRegExp1.Global = Истина
objRegExp1.Pattern = http://.+ 'Получить адрес внутри
set mm=objRegExp1.Execute(str)
Для каждой спички1 в мм
getimgs=getimgs&||&left(Match1.Value,len(Match1.Value)-1) 'Соединяем адреса внутри для последующего использования
следующий
конечная функция
%>
Во-вторых, загрузите изображение и сохраните его на сервере.
<%
функция getHTTPage (url)
при ошибке продолжить дальше
тусклый http
set http=server.createobject(MSXML2.XMLHTTP) 'Используйте метод xmlhttp для получения содержимого изображения
Http.open GET, URL, ложь
HTTP.send()
если Http.readystate<>4, то
функция выхода
конец, если
getHTTPPage=Http.responseBody
установить http=ничего
если err.number<>0, то err.Clear
конечная функция
"Содержимое изображения получено и его необходимо сохранить. Создается впечатление, что это можно сделать с помощью FSO, но на самом деле это не работает. Таким образом, программа сохранения выдаст ошибку, поскольку FSO не поддерживает потоковую передачу. файлы, поэтому нам нужно вызвать другой объект: ADO.STREM. Конкретный процесс заключается в следующем:
функция saveimage(from,tofile)
тусклый geturl, objStream, imgs
geturl=обрезать(из)
imgs=gethttppage(geturl)'Процесс получения конкретного содержимого изображения
Set 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),||) 'Разделяем строку и получаем список адресов внутри
allimg=
новыйimg=
для i=1 до ubound(arrimg)
if arrimg(i)<> и instr(allimg,arrimg(i))<1 then 'Проверим, было ли загружено это изображение
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))
следующий
%>