成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

當前位置:首頁>>軟件教程>>新聞內(nèi)容  
用asp自動解析網(wǎng)頁中的圖片地址[優(yōu)化]
作者:Jaron (唐伯虎點蚊香) 發(fā)布時間:2003-12-23 14:23:45 | 【字體:

icech:這是修改優(yōu)化chinahuman 的代碼,使用了一下,總體還是不錯的,但是有些網(wǎng)友說有時候不行。大家多交流一下。

很久沒寫過東西了,今天看了chinahuman 的《用asp自動解析網(wǎng)頁中的圖片地址,并將其保存到本地服務器》,于是優(yōu)化了這個程序,并且將所有的功能都函數(shù)化了,希望對學習 XMLHTTP 的朋友有所幫助。
程序?qū)崿F(xiàn)功能:自動將遠程頁面的文件中的圖片下載到本地。

<%
'將本文保存為 save2local.asp
'測試:save2local.asp?url=http://ent.sina.com.cn/s/m/2003-11-11/1411231388.html
'本文根據(jù) chinahuman 的《用asp自動解析網(wǎng)頁中的圖片地址,并將其保存到本地服務器》改編和優(yōu)化
'自動創(chuàng)建目錄,自動將原文件名更名,文件格式的限制以及其他功能的一些優(yōu)化
'自動保存網(wǎng)頁文件中 http://.... 格式的圖片到本地
'轉(zhuǎn)載請注明出處:http://www.jaron.cn  url =  request("url")
localaddr = server.MapPath("images_remote/") '保存到本地的目錄
localdir = "images_remote/" 'http 訪問的相對路徑
AllowFileExt = "jpg|bmp|png|gif" '支持的文件名格式
'參數(shù)設置完畢

if createdir(localaddr) = false then
 response.Write "創(chuàng)建目錄失敗,請檢查目錄權限"
 response.End
end if
response.Write Convert2LocalAddr(url,localaddr,localdir)

function Convert2LocalAddr(url,localaddr,localdir)
  '參數(shù)說明
  'url 頁面地址
  'localaddr 保存本地的物理地址
  'localdir 相對路徑
 strContent = getHTTPPage(url)
 Set objRegExp = New Regexp
 objRegExp.IgnoreCase = True
 objRegExp.Global = True
 objRegExp.Pattern = "<img.+?>"
 Set Matches =objRegExp.Execute(strContent)
 For Each Match in Matches
  RetStr = RetStr & GetRemoteImages(Match.Value)
 Next
 ImagesArray=split(RetStr,"||")
 RemoteImage=""
 LocalImage=""
 for i=1 to ubound(ImagesArray)
  if ImagesArray(i)<>"" and instr(RemoteImage,ImagesArray(i))<1 then
   fname=baseurl&cstr(i&mid(ImagesArray(i),instrrev(ImagesArray(i),".")))
   ImagesFileName = ImagesArray(i)
   AllowFileExtArray = split(AllowFileExt,"|")
   isGetFile = false
   for tmp = 0 to ubound(AllowFileExtArray)
    if lcase(GetFileExt(ImagesFileName)) = ALlowFileExtArray(tmp) then
     isGetFile=True
    end if
   next
   if isGetFile = true then
    newfilename =  GenerateRandomFileName(fname)
    call Save2Local(ImagesFileName,localaddr & "/" & newfilename)
    RemoteImage=RemoteImage&"||"& ImagesFileName
    LocalImage=LocalImage&"||" & localdir & newfilename
   end if
  end if
 next
 arrnew=split(LocalImage,"||")
 arrall=split(RemoteImage,"||")
 for i=1 to ubound(arrnew)
  strContent=replace(strContent,arrall(i),arrnew(i))
 next
 Convert2LocalAddr = strContent
end function

function GetRemoteImages(str)
 Set objRegExp1 = New Regexp
 objRegExp1.IgnoreCase = True
 objRegExp1.Global = True
 objRegExp1.Pattern = "http://.+? "
 set mm=objRegExp1.Execute(str)
 For Each Match1 in mm
  tmpaddr = left(Match1.Value,len(Match1.Value)-1)
  GetRemoteImages=GetRemoteImages&"||" & replace(replace(tmpaddr,"""",""),"'","")
 next
end function

function getHTTPPage(url)
 on error resume next
 dim http
 set http=Server.createobject("Msxml2.XMLHTTP")
 Http.open "GET",url,false
 Http.send()
 if Http.readystate<>4 then exit function
 getHTTPPage=bytes2BSTR(Http.responseBody)
 set http=nothing
 if err.number<>0 then err.Clear 
end function

Function bytes2BSTR(vIn)
 dim strReturn
 dim i,ThisCharCode,NextCharCode
 strReturn = ""
 For i = 1 To LenB(vIn)
  ThisCharCode = AscB(MidB(vIn,i,1))
  If ThisCharCode < &H80 Then
   strReturn = strReturn & Chr(ThisCharCode)
  Else
   NextCharCode = AscB(MidB(vIn,i+1,1))
   strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
   i = i + 1
  End If
 Next
 bytes2BSTR = strReturn
End Function

function getHTTPimg(url)
 on error resume next
 dim http
 set http=server.createobject("MSXML2.XMLHTTP")
 Http.open "GET",url,false
 Http.send()
 if Http.readystate<>4 then  exit function
 getHTTPimg=Http.responseBody
 set http=nothing
 if err.number<>0 then err.Clear
end function

function Save2Local(from,tofile)
 dim geturl,objStream,imgs
 geturl=trim(from)
 imgs=gethttpimg(geturl)
 Set objStream = Server.CreateObject("ADODB.Stream")
 objStream.Type =1
 objStream.Open
 objstream.write imgs
 objstream.SaveToFile tofile,2
 objstream.Close()
 set objstream=nothing
end function

function geturlencodel(byval url)'中文文件名轉(zhuǎn)換
 Dim i,code
 geturlencodel=""
 if trim(Url)="" then exit function
 for i=1 to len(Url)
  code=Asc(mid(Url,i,1))
  if code<0 Then code = code + 65536
  If code>255 Then
   geturlencodel=geturlencodel&"%"&Left(Hex(Code),2)&"%"&Right(Hex(Code),2)
  else
   geturlencodel=geturlencodel&mid(Url,i,1)
  end if
 next
end function

Function GenerateRandomFileName(ByVal szFilename) '根據(jù)原文件名,自動以日期YYYY-MM-DD-RANDOM格式生成新文件名
    Randomize
    ranNum = Int(90000 * Rnd) + 10000
    If Month(Now) < 10 Then c_month = "0" & Month(Now) Else c_month = Month(Now)
    If Day(Now) < 10 Then c_day = "0" & Day(Now) Else c_day = Day(Now)
    If Hour(Now) < 10 Then c_hour = "0" & Hour(Now) Else c_hour = Hour(Now)
    If Minute(Now) < 10 Then c_minute = "0" & Minute(Now) Else c_minute = Minute(Now)
    If Second(Now) < 10 Then c_second = "0" & Second(Now) Else c_second = Minute(Now)
    fileExt_a = Split(szFilename, ".")
    FileExt = LCase(fileExt_a(UBound(fileExt_a)))
    GenerateRandomFileName = Year(Now) & c_month & c_day & c_hour & c_minute & c_second & "_" & ranNum & "." & FileExt
End Function

Function CreateDIR(ByVal LocalPath) '建立目錄的程序,如果有多級目錄,則一級一級的創(chuàng)建
    On Error Resume Next
    LocalPath = Replace(LocalPath, "\", "/")
    Set FileObject = server.CreateObject("Scripting.FileSystemObject")
    patharr = Split(LocalPath, "/")
    path_level = UBound(patharr)
    For I = 0 To path_level
        If I = 0 Then pathtmp = patharr(0) & "/" Else pathtmp = pathtmp & patharr(I) & "/"
        cpath = Left(pathtmp, Len(pathtmp) - 1)
        If Not FileObject.FolderExists(cpath) Then FileObject.CreateFolder cpath
    Next
    Set FileObject = Nothing
    If Err.Number <> 0 Then
        CreateDIR = False
        Err.Clear
    Else
        CreateDIR = True
    End If
End Function

function GetfileExt(byval filename)
 fileExt_a=split(filename,".")
 GetfileExt=lcase(fileExt_a(ubound(fileExt_a)))
end function
%>


有一點要注意的是,這里只是分析了以 http開頭的圖片的地址。否則不下載圖片,可以轉(zhuǎn)換一下地址就行了,再提供幾個小函數(shù),分析地址用的:

Function findurl(thisurl)
 if thisurl <> "" Then
 findurl=""
 strlen=InStr(8,thisurl,"/")
 If strlen=0 Then strlen =1
 findurl=Mid(thisurl,strlen,28)
 end if
end Function

function findurlpath(thisurl)
 thisurl = replace(thisurl,"http://","@@")
 ary_tmp = split(thisurl,"/")
 for tmp = 0 to ubound(ary_tmp)
  if tmp < ubound(ary_tmp) then
   urltmp = urltmp & "/" & ary_tmp(tmp)
  end if
 next
 urltmp = right(urltmp,len(urltmp)-1)
 findurlpath = replace(urltmp,"@@","http://") & "/"
end function

function findurlhost(thisurl)
 thisurl = replace(thisurl,"http://","@@")
 ary_tmp = split(thisurl,"/")
 urltmp = ary_tmp(0)
 findurlhost = replace(urltmp,"@@","http://") & "/"
 findurlhost = left(findurlhost,len(findurlhost)-1)
end function



文章來源:CSDN
 放生
 愚愛
 夠愛
 觸電
 白狐
 葬愛
 光榮
 畫心
 火花
 稻香
 小酒窩
 下雨天
 右手邊
 安靜了
 魔杰座
 你不像她
 邊做邊愛
 擦肩而過
 我的答鈴
 懷念過去
 等一分鐘
 放手去愛
 冰河時代
 你的承諾
 自由飛翔
 原諒我一次
 吻的太逼真
 左眼皮跳跳
 做你的愛人
 一定要愛你
 飛向別人的床
 愛上別人的人
 感動天感動地
 心在跳情在燒
 玫瑰花的葬禮
 有沒有人告訴你
 即使知道要見面
 愛上你是一個錯
 最后一次的溫柔
 愛上你是我的錯
 怎么會狠心傷害我
 不是因為寂寞才想
 親愛的那不是愛情
 難道愛一個人有錯
 寂寞的時候說愛我
主站蜘蛛池模板: 鄂温| 青川县| 清流县| 宜阳县| 北安市| 全椒县| 德惠市| 普定县| 大同市| 大洼县| 句容市| 大埔县| 张北县| 金塔县| 玉门市| 焦作市| 兴和县| 蒙城县| 上犹县| 定日县| 玉溪市| 临猗县| 买车| 招远市| 大方县| 枣庄市| 太仓市| 平塘县| 漠河县| 遂川县| 义马市| 永清县| 内乡县| 阿巴嘎旗| 龙泉市| 吐鲁番市| 抚顺市| 望奎县| 大港区| 乡宁县| 凌云县|