asp+XMLHTTP組件做采集常用函數(shù)收集2
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
'==================================================
'函數(shù)名:ReplaceSaveRemoteFile '作 用:替換、保存遠程圖片 '參 數(shù):ConStr ------ 要替換的字符串 '參 數(shù):SaveTf ------ 是否保存文件,F(xiàn)alse不保存,True保存 '參 數(shù): TistUrl------ 當前網(wǎng)頁地址 '================================================== Function ReplaceSaveRemoteFile(ConStr,strInstallDir,strChannelDir,SaveTf,TistUrl) If ConStr="$False$" or ConStr="" or strInstallDir="" or strChannelDir="" Then ReplaceSaveRemoteFile=ConStr Exit Function End If Dim TempStr,TempStr2,TempStr3,Re,Matches,Match,Tempi,TempArray,TempArray2 Dim Start1,Start2 Set Re = New Regexp Re.IgnoreCase = True Re.Global = True Re.Pattern ="<img.+?[^\>]>" Set Matches =Re.Execute(ConStr) For Each Match in Matches If TempStr<>"" then TempStr=TempStr & "$Array$" & Match.Value Else TempStr=Match.Value End if Next If TempStr<>"" Then TempArray=Split(TempStr,"$Array$") TempStr="" For Tempi=0 To Ubound(TempArray) Re.Pattern ="src\s*=\s*.+?\.(gif|jpg|bmp|jpeg|psd|png|svg|dxf|wmf|tiff)" Set Matches =Re.Execute(TempArray(Tempi)) For Each Match in Matches If TempStr<>"" then TempStr=TempStr & "$Array$" & Match.Value Else TempStr=Match.Value End if Next Next End if If TempStr<>"" Then Re.Pattern ="src\s*=\s*" TempStr=Re.Replace(TempStr,"") End If Set Matches=nothing Set Re=nothing If TempStr="" or IsNull(TempStr)=True Then ReplaceSaveRemoteFile=ConStr Exit function End if TempStr=Replace(TempStr,"""","") TempStr=Replace(TempStr,"'","") TempStr=Replace(TempStr," ","") Dim RemoteFileurl,SavePath,PathTemp,DtNow,strFileName,strFileType,ArrSaveFileName,RanNum,Arr_Path DtNow=Now() If SaveTf=True then SavePath=strInstallDir & strChannelDir & "/UploadFiles/" & year(DtNow) & right("0" & month(DtNow),2) & "/" Arr_Path=Split(SavePath,"/") PathTemp="" For Tempi=0 To Ubound(Arr_Path) If Tempi=0 Then PathTemp=Arr_Path(0) & "/" ElseIf Tempi=Ubound(Arr_Path) Then Exit For Else PathTemp=PathTemp & Arr_Path(Tempi) & "/" End If If CheckDir(PathTemp)=False Then If MakeNewsDir(PathTemp)=False Then SaveTf=False Exit For End If End If Next End If '去掉重復圖片開始 TempArray=Split(TempStr,"$Array$") TempStr="" For Tempi=0 To Ubound(TempArray) If Instr(Lcase(TempStr),Lcase(TempArray(Tempi)))<1 Then TempStr=TempStr & "$Array$" & TempArray(Tempi) End If Next TempStr=Right(TempStr,Len(TempStr)-7) TempArray=Split(TempStr,"$Array$") '去掉重復圖片結束 '轉換相對圖片地址開始 TempStr="" For Tempi=0 To Ubound(TempArray) TempStr=TempStr & "$Array$" & DefiniteUrl(TempArray(Tempi),TistUrl) Next TempStr=Right(TempStr,Len(TempStr)-7) TempStr=Replace(TempStr,Chr(0),"") TempArray2=Split(TempStr,"$Array$") TempStr="" '轉換相對圖片地址結束 '圖片替換/保存 Set Re = New Regexp Re.IgnoreCase = True Re.Global = True For Tempi=0 To Ubound(TempArray2) RemoteFileUrl=TempArray2(Tempi) If RemoteFileUrl<>"$False$" And SaveTf=True Then'保存圖片 ArrSaveFileName = Split(RemoteFileurl,".") strFileType=Lcase(ArrSaveFileName(Ubound(ArrSaveFileName)))'文件類型 If strFileType="asp" or strFileType="asa" or strFileType="aspx" or strFileType="cer" or strFileType="cdx" or strFileType="exe" or strFileType="rar" or strFileType="zip" then UploadFiles="" ReplaceSaveRemoteFile=ConStr Exit Function End If Randomize RanNum=Int(900*Rnd)+100 strFileName = year(DtNow) & right("0" & month(DtNow),2) & right("0" & day(DtNow),2) & right("0" & hour(DtNow),2) & right("0" & minute(DtNow),2) & right("0" & second(DtNow),2) & ranNum & "." & strFileType Re.Pattern =TempArray(Tempi) If SaveRemoteFile(SavePath & strFileName,RemoteFileUrl)=True Then PathTemp=Replace(SavePath &strFileName,strInstallDir & strChannelDir & "/","[InstallDir_ChannelDir]") ConStr=Re.Replace(ConStr,PathTemp) Re.Pattern=strInstallDir & strChannelDir & "/" UploadFiles=UploadFiles & "|" & Re.Replace(SavePath &strFileName,"") Else PathTemp=RemoteFileUrl ConStr=Re.Replace(ConStr,PathTemp) 'UploadFiles=UploadFiles & "|" & RemoteFileUrl End If ElseIf RemoteFileurl<>"$False$" and SaveTf=False Then'不保存圖片 Re.Pattern =TempArray(Tempi) ConStr=Re.Replace(ConStr,RemoteFileUrl) UploadFiles=UploadFiles & "|" & RemoteFileUrl End If Next Set Re=nothing If UploadFiles<>"" Then UploadFiles=Right(UploadFiles,Len(UploadFiles)-1) End If ReplaceSaveRemoteFile=ConStr End function '================================================== '過程名:SaveRemoteFile '作 用:保存遠程的文件到本地 '參 數(shù):LocalFileName ------ 本地文件名 '參 數(shù):RemoteFileUrl ------ 遠程文件URL '================================================== Function SaveRemoteFile(LocalFileName,RemoteFileUrl) On error resume next SaveRemoteFile=True dim Ads,Retrieval,GetRemoteData Set Retrieval = Server.CreateObject("Microsoft.XMLHTTP") With Retrieval .Open "Get", RemoteFileUrl, False, "", "" .Send If .Readystate<>4 then SaveRemoteFile=False Exit Function End If GetRemoteData = .ResponseBody End With Set Retrieval = Nothing Set Ads = Server.CreateObject("Adodb.Stream") With Ads .Type = 1 .Open .Write GetRemoteData .SaveToFile server.MapPath(LocalFileName),2 .Cancel() .Close() End With Set Ads=nothing end Function '================================================== '函數(shù)名:FpHtmlEnCode '作 用:標題過濾 '參 數(shù):fString ------字符串 '================================================== Function FpHtmlEnCode(fString) If IsNull(fString)=False or fString<>"" or fString<>"$False$" Then fString=nohtml(fString) fString=FilterJS(fString) fString = Replace(fString, CHR(9), "") fString = Replace(fString, CHR(34), "") fString = Replace(fString, CHR(39), "") fString = Replace(fString, CHR(13), "") fString = Replace(fString, CHR(10), " ") fString=Trim(fString) fString=dvhtmlencode(fString) FpHtmlEnCode=fString Else FpHtmlEnCode="$False$" End If End Function '================================================== '函數(shù)名:GetPaing '作 用:獲取分頁 '================================================== Function GetPaing(Byval ConStr,StartStr,OverStr,IncluL,IncluR) If ConStr="$False$" or ConStr="" or StartStr="" or OverStr="" or IsNull(ConStr)=True or IsNull(StartStr)=True or IsNull(OverStr)=True Then GetPaing="$False$" Exit Function End If Dim Start,Over,ConTemp,Erri ConStr=LCase(ConStr) StartStr=LCase(StartStr) OverStr=LCase(OverStr) Over=InstrB(1,ConStr,OverStr,vbBinaryCompare) If Over<=0 Then GetPaing="$False$" Exit Function Else Over=Over+Lenb(OverStr) End If Start=Over-5 If Start<=0 Then GetPaing="$False$" Exit Function End If ConTemp=MidB(ConStr,Start,Over-Start) Do While InstrB(1,ConTemp,StartStr,vbBinaryCompare)<=0 Erri=Erri+1 If Erri>50 then GetPaing="$False$" Exit Function End If Start=Start-5 if Start<=0 then GetPaing="$False$" Exit Do Exit Function Else ConTemp=MidB(ConStr,Start,Over-Start) End If Loop Start=InstrB(1,ConTemp,StartStr,vbBinaryCompare) If IncluL=False Then Start=Start+LenB(StartStr) End If Over=InstrB(Start,ConTemp,OverStr,vbBinaryCompare) If IncluR=True Then Over=Over+LenB(OverStr) End If If Start>=Over then GetPaing="$False$" Exit Function End If GetPaing=MidB(ConTemp,Start,Over-Start) GetPaing=Trim(GetPaing) GetPaing=Replace(GetPaing," ","") GetPaing=Replace(GetPaing,",","") GetPaing=Replace(GetPaing,"'","") GetPaing=Replace(GetPaing,"""","") GetPaing=Replace(GetPaing,">","") GetPaing=Replace(GetPaing,"<","") End Function '================================================== '函數(shù)名:ScriptHtml '作 用:過濾html標記 '參 數(shù):ConStr ------ 要過濾的字符串 '================================================== Function ScriptHtml(Byval ConStr,TagName,FType) Dim Re Set Re=new RegExp Re.IgnoreCase =true Re.Global=True Select Case FType Case 1 Re.Pattern="<" & TagName & "([^>])*>" ConStr=Re.Replace(ConStr,"") Case 2 Re.Pattern="<" & TagName & "([^>])*>.*?</" & TagName & "([^>])*>" ConStr=Re.Replace(ConStr,"") Case 3 Re.Pattern="<" & TagName & "([^>])*>" ConStr=Re.Replace(ConStr,"") Re.Pattern="</" & TagName & "([^>])*>" ConStr=Re.Replace(ConStr,"") End Select ScriptHtml=ConStr Set Re=Nothing End Function Function CheckDir(byval FolderPath) dim fso Set fso = Server.CreateObject("Scripting.FileSystemObject") If fso.FolderExists(Server.MapPath(folderpath)) then '存在 CheckDir = True Else '不存在 CheckDir = False End if Set fso = nothing End Function Function MakeNewsDir(byval foldername) dim fso Set fso = Server.CreateObject("Scripting.FileSystemObject") fso.CreateFolder(Server.MapPath(foldername)) If fso.FolderExists(Server.MapPath(foldername)) Then MakeNewsDir = True Else MakeNewsDir = False End If Set fso = nothing End Function '************************************************** '函數(shù)名:IsObjInstalled '作 用:檢查組件是否已經(jīng)安裝 '參 數(shù):strClassString ----組件名 '返回值:True ----已經(jīng)安裝 ' False ----沒有安裝 '************************************************** Function IsObjInstalled(strClassString) On Error Resume Next IsObjInstalled = False Err = 0 Dim xTestObj Set xTestObj = Server.CreateObject(strClassString) If 0 = Err Then IsObjInstalled = True Set xTestObj = Nothing Err = 0 End Function '************************************************** '過程名:WriteErrMsg '作 用:顯示錯誤提示信息 '參 數(shù):無 '************************************************** sub WriteErrMsg(ErrMsg) dim strErr strErr=strErr & "<html><head><title>錯誤信息</title><meta http-equiv='Content-Type' content='text/html; charset=gb2312'>" & vbcrlf strErr=strErr & "<link href='../admin/Admin_STYLE.CSS' rel='stylesheet' type='text/css'></head><body><br><br>" & vbcrlf strErr=strErr & "<table cellpadding=2 cellspacing=1 border=0 width=400 align=center>" & vbcrlf strErr=strErr & " <tr align='center' ><td height='22'><strong>錯誤信息</strong></td></tr>" & vbcrlf strErr=strErr & " <tr ><td height='100' valign='top'><b>產(chǎn)生錯誤的可能原因:</b>" & ErrMsg &"</td></tr>" & vbcrlf strErr=strErr & " <tr align='center' ><td><a href='javascript:history.go(-1)'><< 返回上一頁</a></td></tr>" & vbcrlf strErr=strErr & "</table>" & vbcrlf strErr=strErr & "</body></html>" & vbcrlf response.write strErr end sub '************************************************** '過程名:WriteSucced '作 用:顯示成功提示信息 '參 數(shù):無 '************************************************** sub WriteSucced(ErrMsg) dim strErr strErr=strErr & "<html><head><title>成功信息</title><meta http-equiv='Content-Type' content='text/html; charset=gb2312'>" & vbcrlf strErr=strErr & "<link href='../admin/Admin_STYLE.CSS' rel='stylesheet' type='text/css'></head><body><br><br>" & vbcrlf strErr=strErr & "<table cellpadding=2 cellspacing=1 border=0 width=400 align=center>" & vbcrlf strErr=strErr & " <tr align='center' ><td height='22'><strong>恭喜你!</strong></td></tr>" & vbcrlf strErr=strErr & " <tr ><td height='100' valign='top' align='center'>" & ErrMsg &"</td></tr>" & vbcrlf 'strErr=strErr & " <tr align='center' ><td><a href='javascript:history.go(-1)'><< 返回上一頁</a></td></tr>" & vbcrlf strErr=strErr & "</table>" & vbcrlf strErr=strErr & "</body></html>" & vbcrlf response.write strErr end sub '************************************************** '函數(shù)名:ShowPage '作 用:顯示“上一頁 下一頁”等信息 '參 數(shù):sFileName ----鏈接地址 ' TotalNumber ----總數(shù)量 ' MaxPerPage ----每頁數(shù)量 ' ShowTotal ----是否顯示總數(shù)量 ' ShowAllPages ---是否用下拉列表顯示所有頁面以供跳轉。有某些頁面不能使用,否則會出現(xiàn)JS錯誤。 ' strUnit ----計數(shù)單位 '返回值:“上一頁 下一頁”等信息的HTML代碼 '************************************************** function ShowPage(sFileName,TotalNumber,MaxPerPage,ShowTotal,ShowAllPages,strUnit) dim TotalPage,strTemp,strUrl,i if TotalNumber=0 or MaxPerPage=0 or isNull(MaxPerPage) then ShowPage="" exit function end if if totalnumber mod maxperpage=0 then TotalPage= totalnumber \ maxperpage else TotalPage= totalnumber \ maxperpage+1 end if if CurrentPage>TotalPage then CurrentPage=TotalPage strTemp= "<table align='center'><tr><td>" if ShowTotal=true then strTemp=strTemp & "共 <b>" & totalnumber & "</b> " & strUnit & " " end if strUrl=JoinChar(sfilename) if CurrentPage<2 then strTemp=strTemp & "首頁 上一頁 " else strTemp=strTemp & "<a href='" & strUrl & "page=1'>首頁</a> " strTemp=strTemp & "<a href='" & strUrl & "page=" & (CurrentPage-1) & "'>上一頁</a> " end if if CurrentPage>=TotalPage then strTemp=strTemp & "下一頁 尾頁" else strTemp=strTemp & "<a href='" & strUrl & "page=" & (CurrentPage+1) & "'>下一頁</a> " strTemp=strTemp & "<a href='" & strUrl & "page=" & TotalPage & "'>尾頁</a>" end if strTemp=strTemp & " 頁次:<strong><font color=red>" & CurrentPage & "</font>/" & TotalPage & "</strong>頁 " strTemp=strTemp & " <b>" & maxperpage & "</b>" & strUnit & "/頁" if ShowAllPages=True then strTemp=strTemp & " 轉到第<input type='text' name='page' size='3' maxlength='5' value='" & CurrentPage & "' onKeyPress=""if (event.keyCode==13) window.location='" & strUrl & "page=" & "'+this.value;""'>頁" end if strTemp=strTemp & "</td></tr></table>" ShowPage=strTemp end function '************************************************** '函數(shù)名:JoinChar '作 用:向地址中加入 ? 或 & '參 數(shù):strUrl ----網(wǎng)址 '返回值:加了 ? 或 & 的網(wǎng)址 '************************************************** function JoinChar(strUrl) if strUrl="" then JoinChar="" exit function end if if InStr(strUrl,"?")<len(strUrl) then if InStr(strUrl,"?")>1 then if InStr(strUrl,"&")<len(strUrl) then JoinChar=strUrl & "&" else JoinChar=strUrl end if else JoinChar=strUrl & "?" end if else JoinChar=strUrl end if end function '************************************************** '函數(shù)名:CreateKeyWord '作 用:由給定的字符串生成關鍵字 '參 數(shù):Constr---要生成關鍵字的原字符串 '返回值:生成的關鍵字 '************************************************** Function CreateKeyWord(byval Constr) If Constr="" or IsNull(Constr)=True or Constr="$False$" Then CreateKeyWord="$False$" Exit Function End If Constr=Replace(Constr,CHR(32),"") Constr=Replace(Constr,CHR(9),"") Constr=Replace(Constr," ","") Constr=Replace(Constr," ","") Constr=Replace(Constr,"(","") Constr=Replace(Constr,")","") Constr=Replace(Constr,"<","") Constr=Replace(Constr,">","") Dim i,ConstrTemp For i=1 To Len(Constr) ConstrTemp=ConstrTemp & "|" & Mid(Constr,i,2) Next If Len(ConstrTemp)<254 Then ConstrTemp=ConstrTemp & "|" Else ConstrTemp=Left(ConstrTemp,254) & "|" End If CreateKeyWord=ConstrTemp End Function Function CheckUrl(strUrl) Dim Re Set Re=new RegExp Re.IgnoreCase =true Re.Global=True Re.Pattern="http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?" If Re.test(strUrl)=True Then CheckUrl=strUrl Else CheckUrl="$False$" End If Set Rs=Nothing End Function 該文章在 2013/11/28 11:38:33 編輯過 |
關鍵字查詢
相關文章
正在查詢... |