1. 元のページの画像のアドレスを取得します。
<%
関数 PicStr(str)
Set objRegExp = New Regexp '設定オブジェクトを設定します
objRegExp.IgnoreCase = True '大文字と小文字を無視します
objRegExp.Global = True '全文検索用に設定します
objRegExp.Pattern = <IMG.+?> 'イメージ アドレスを正確に取得できるようにするため、構成は 2 つのレベルに分かれています。最初に内部の <IMG> タグを見つけ、次に内部のイメージ アドレスを取得します。その背後にある getimgs 関数は、後者の Functional を実装するためのものです。
strs=トリム(str)
Set Matches =objRegExp.Execute(strs) '設定の実行を開始します
試合中の各試合について
PicStr = PicStr &getimgs( Match.Value ) ' 2 回目のマッチングを実行します。
次
'すべての写真は src=http://picture アドレスのようなものなので、次のように正確な写真アドレスを取得できます
終了関数
関数 getimgs(str)
getimgs=
objRegExp1 = 新しい正規表現を設定します
objRegExp1.IgnoreCase = True
objRegExp1.Global = True
objRegExp1.Pattern = http://.+? '内部のアドレスを取得します
set 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()
if Http.readystate<>4 then
終了関数
終了する場合
getHTTPPage=Http.responseBody
http=何も設定しない
if err.number<>0 then err.Clear
終了関数
画像のコンテンツは取得されており、保存する必要があります。これは FSO で実行できるように見えますが、実際には、FSO がストリーミングをサポートしていないため、この方法では保存プログラムがエラーになります。ファイルがあるため、別のオブジェクト ADO.STREM を呼び出す必要があります。具体的なプロセスは次のとおりです。
関数 saveimage(from,tofile)
dim 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=
newimg=
i=1 から ubound(arrimg) まで
if arrimg(i)<> and 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 'ローカルアドレスを文字列で返します
終了する場合
次
' 3 番目のステップは、元のアドレスを置き換えることです。具体的なプロセスは次のとおりです。
arrnew=split(newimg,||) '元の画像アドレスリストを取得
arrall=split(allimg,||) '保存されている写真のアドレス一覧を取得
for i=1 to ubound(arrnew) 'ループを実行して元のアドレスを置き換えます
strs=replace(strs,arrall(i),arrnew(i))
次
%>