以下是取出HTML裡面的圖片位址的函數:
主要原理就是用正規判斷<img> 的<src>屬性。這在採集程序中將非常有用。
函數如下:
以下是引用片段:
Function ShowPic(str)
Set objRegExp = New Regexp'設定配置對象
objRegExp.IgnoreCase = True'忽略大小寫
objRegExp.Global = True'設定為全文搜索
objRegExp.Pattern = "<img.+?>"
'為了確保能準確地取出圖片地址所以分為兩層配置:首先找到裡面的<img>標籤,然後再取出裡面的圖片地址後面的getimgs函數就是實現後一個功能的。
strs=trim(str)
Set Matches =objRegExp.Execute(strs)'開始執行配置
For Each Match in Matches
RetStr = RetStr &getimgs( Match.Value )'執行第二輪的匹配
Next
ShowPic = RetStr
End Function
Function getimgs(str)
getimgs=""
Set objRegExp1 = New Regexp
objRegExp1.IgnoreCase = True
objRegExp1.Global = True
objRegExp1.Pattern = " http://.+?"""'取出裡面的位址
set mm=objRegExp1.Execute(str)
For Each Match1 in mm
getimgs=getimgs&left(Match1.Value,len(Match1.Value)-1)&"||"'把裡面的地址串起來備用
next
End Function
'取得圖片內容
function getHTTPPage(url)
on error resume next
dim http
set http=server.createobject("MSXML2.XMLHTTP")'使用xmlhttp的方法來取得圖片的內容
Http.open "GET",url,false
Http.send()
if Http.readystate<>4 then
exit function
end if
getHTTPPage=Http.responseBody
set http=nothing
if err.number<>0 then err.Clear
end function
'保存圖片
function saveimage(from,tofile)
dim geturl,objStream,imgs
geturl=trim(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()'關閉對象
set objstream=nothing
end function
'呼叫實例
Dim strpic,i,fname
strpic = ShowPic("<DIV align=center><IMG src="" strpic = Split(strpic,"||")
If UBound(strpic) > 0 Then
For i = 0 To UBound(strpic) - 1
'保存圖片
fname=cstr(i&mid(strpic(i),instrrev(strpic(i),".")))
saveimage(strpic(i),fname)
Next
Else
End If