1. 원본 페이지의 이미지 주소를 가져옵니다.
<%
함수 PicStr(str)
Set objRegExp = New Regexp '구성 개체 설정
objRegExp.IgnoreCase = True '대소문자 무시
objRegExp.Global = True '전체 텍스트 검색을 위해 설정
objRegExp.Pattern = <IMG.+?> '이미지 주소를 정확하게 검색할 수 있도록 하기 위해 두 가지 구성 수준으로 나뉩니다. 먼저 내부에서 <IMG> 태그를 찾은 다음 내부에서 이미지 주소를 검색합니다. 그 뒤에 있는 getimgs 함수는 후자를 Functional로 구현하는 것입니다.
strs=트림(str)
Set Matches =objRegExp.Execute(strs) '구성 실행 시작
경기의 각 경기에 대해
PicStr = PicStr &getimgs( Match.Value ) '두 번째 매칭을 수행합니다.
다음
'모든 사진은 src=http://picture 주소와 같으므로 정확한 사진 주소는 이렇게 알 수 있습니다.
종료 기능
함수 getimgs(str)
getimgs=
objRegExp1 = 새 정규식 설정
objRegExp1.IgnoreCase = 참
objRegExp1.Global = 참
objRegExp1.Pattern = http://.+ '내부 주소 가져오기
mm=objRegExp1.Execute(str) 설정
각 일치 항목에 대해1(mm)
getimgs=getimgs&||&left(Match1.Value,len(Match1.Value)-1) '나중에 사용하기 위해 내부 주소를 함께 묶습니다.
다음
종료 기능
%>
둘째, 이미지를 다운로드하여 서버에 저장합니다.
<%
함수 getHTTPage(url)
오류 발생 시 다음 재개
희미한 http
set http=server.createobject(MSXML2.XMLHTTP) 'xmlhttp 메소드를 사용하여 이미지 내용을 가져옵니다.
Http.open GET,URL,false
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=트림(from)
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),||) '문자열을 분할하고 내부의 주소 목록을 가져옵니다.
알림=
newimg=
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))
다음
%>