一个带采集远程文章内容,保存图片,生成文件等完整的采集功能

时间:2022-09-30 15:23:41

代码如下:


'================================================== 
'函数名:GetHttpPage 
'作 用:获取网页源码 
'参 数:HttpUrl ------网页地址 
'================================================== 
Function GetHttpPage(HttpUrl) 
If IsNull(HttpUrl)=True Or Len(HttpUrl)<18 Or HttpUrl="$False$" Then 
GetHttpPage="$False$" 
Exit Function 
End If 
Dim Http 
Set Http=server.createobject("MSX" & "ML2.XM" & "LHT" & "TP") 
Http.open "GET",HttpUrl,False 
Http.Send() 
If Http.Readystate<>4 then 
Set Http=Nothing 
GetHttpPage="$False$" 
Exit function 
End if 
GetHTTPPage=bytesToBSTR(Http.responseBody,"GB2312") 
GetHTTPPage=replace(replace(GetHTTPPage , vbCr,""),vbLf,"") 
Set Http=Nothing 
If Err.number<>0 then 
Err.Clear 
End If 
End Function 

'================================================== 
'函数名:BytesToBstr 
'作 用:将获取的源码转换为中文 
'参 数:Body ------要转换的变量 
'参 数:Cset ------要转换的类型 
'================================================== 
Function BytesToBstr(Body,Cset) 
Dim Objstream 
Set Objstream = Server.CreateObject("ad" & "odb.str" & "eam") 
objstream.Type = 1 
objstream.Mode =3 
objstream.Open 
objstream.Write body 
objstream.Position = 0 
objstream.Type = 2 
objstream.Charset = Cset 
BytesToBstr = objstream.ReadText 
objstream.Close 
set objstream = nothing 
End Function 

'================================================== 
'函数名:PostHttpPage 
'作 用:登录 
'================================================== 
Function PostHttpPage(RefererUrl,PostUrl,PostData) 
Dim xmlHttp 
Dim RetStr 
Set xmlHttp = CreateObject("Msx" & "ml2.XM" & "LHT" & "TP") 
xmlHttp.Open "POST", PostUrl, False 
XmlHTTP.setRequestHeader "Content-Length",Len(PostData) 
xmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
xmlHttp.setRequestHeader "Referer", RefererUrl 
xmlHttp.Send PostData 
If Err.Number <> 0 Then 
Set xmlHttp=Nothing 
PostHttpPage = "$False$" 
Exit Function 
End If 
PostHttpPage=bytesToBSTR(xmlHttp.responseBody,"GB2312") 
Set xmlHttp = nothing 
End Function 

'================================================== 
'函数名:UrlEncoding 
'作 用:转换编码 
'================================================== 
Function UrlEncoding(DataStr) 
Dim StrReturn,Si,ThisChr,InnerCode,Hight8,Low8 
StrReturn = "" 
For Si = 1 To Len(DataStr) 
ThisChr = Mid(DataStr,Si,1) 
If Abs(Asc(ThisChr)) < &HFF Then 
StrReturn = StrReturn & ThisChr 
Else 
InnerCode = Asc(ThisChr) 
If InnerCode < 0 Then 
InnerCode = InnerCode + &H10000 
End If 
Hight8 = (InnerCode And &HFF00)\ &HFF 
Low8 = InnerCode And &HFF 
StrReturn = StrReturn & "%" & Hex(Hight8) & "%" & Hex(Low8) 
End If 
Next 
UrlEncoding = StrReturn 
End Function 

'================================================== 
'函数名:GetBody 
'作 用:截取字符串 
'参 数:ConStr ------将要截取的字符串 
'参 数:StartStr ------开始字符串 
'参 数:OverStr ------结束字符串 
'参 数:IncluL ------是否包含StartStr 
'参 数:IncluR ------是否包含OverStr 
'================================================== 
Function GetBody(ConStr,StartStr,OverStr,IncluL,IncluR) 
If ConStr="$False$" or ConStr="" or IsNull(ConStr)=True Or StartStr="" or IsNull(StartStr)=True Or OverStr="" or IsNull(OverStr)=True Then 
GetBody="$False$" 
Exit Function 
End If 
Dim ConStrTemp 
Dim Start,Over 
ConStrTemp=Lcase(ConStr) 
StartStr=Lcase(StartStr) 
OverStr=Lcase(OverStr) 
Start = InStrB(1, ConStrTemp, StartStr, vbBinaryCompare) 
If Start<=0 then 
GetBody="$False$" 
Exit Function 
Else 
If IncluL=False Then 
Start=Start+LenB(StartStr) 
End If 
End If 
Over=InStrB(Start,ConStrTemp,OverStr,vbBinaryCompare) 
If Over<=0 Or Over<=Start then 
GetBody="$False$" 
Exit Function 
Else 
If IncluR=True Then 
Over=Over+LenB(OverStr) 
End If 
End If 
GetBody=MidB(ConStr,Start,Over-Start) 
End Function 



'================================================== 
'函数名:GetArray 
'作 用:提取链接地址,以$Array$分隔 
'参 数:ConStr ------提取地址的原字符 
'参 数:StartStr ------开始字符串 
'参 数:OverStr ------结束字符串 
'参 数:IncluL ------是否包含StartStr 
'参 数:IncluR ------是否包含OverStr 
'================================================== 
Function GetArray(Byval ConStr,StartStr,OverStr,IncluL,IncluR) 
If ConStr="$False$" or ConStr="" Or IsNull(ConStr)=True or StartStr="" Or OverStr="" or IsNull(StartStr)=True Or IsNull(OverStr)=True Then 
GetArray="$False$" 
Exit Function 
End If 
Dim TempStr,TempStr2,objRegExp,Matches,Match 
TempStr="" 
Set objRegExp = New Regexp 
objRegExp.IgnoreCase = True 
objRegExp.Global = True 
objRegExp.Pattern = "("&StartStr&").+?("&OverStr&")" 
Set Matches =objRegExp.Execute(ConStr) 
For Each Match in Matches 
TempStr=TempStr & "$Array$" & Match.Value 
Next 
Set Matches=nothing 

If TempStr="" Then 
GetArray="$False$" 
Exit Function 
End If 
TempStr=Right(TempStr,Len(TempStr)-7) 
If IncluL=False then 
objRegExp.Pattern =StartStr 
TempStr=objRegExp.Replace(TempStr,"") 
End if 
If IncluR=False then 
objRegExp.Pattern =OverStr 
TempStr=objRegExp.Replace(TempStr,"") 
End if 
Set objRegExp=nothing 
Set Matches=nothing 

TempStr=Replace(TempStr,"""","") 
TempStr=Replace(TempStr,"'","") 
TempStr=Replace(TempStr," ","") 
TempStr=Replace(TempStr,"(","") 
TempStr=Replace(TempStr,")","") 

If TempStr="" then 
GetArray="$False$" 
Else 
GetArray=TempStr 
End if 
End Function 


'================================================== 
'函数名:DefiniteUrl 
'作 用:将相对地址转换为绝对地址 
'参 数:PrimitiveUrl ------要转换的相对地址 
'参 数:ConsultUrl ------当前网页地址 
'================================================== 
Function DefiniteUrl(Byval PrimitiveUrl,Byval ConsultUrl) 
Dim ConTemp,PriTemp,Pi,Ci,PriArray,ConArray 
If PrimitiveUrl="" or ConsultUrl="" or PrimitiveUrl="$False$" or ConsultUrl="$False$" Then 
DefiniteUrl="$False$" 
Exit Function 
End If 
If Left(Lcase(ConsultUrl),7)<>"http://" Then 
ConsultUrl= "http://" & ConsultUrl 
End If 
ConsultUrl=Replace(ConsultUrl,"\","/") 
ConsultUrl=Replace(ConsultUrl,"://",":\\") 
PrimitiveUrl=Replace(PrimitiveUrl,"\","/") 

If Right(ConsultUrl,1)<>"/" Then 
If Instr(ConsultUrl,"/")>0 Then 
If Instr(Right(ConsultUrl,Len(ConsultUrl)-InstrRev(ConsultUrl,"/")),".")>0 then 
Else 
ConsultUrl=ConsultUrl & "/" 
End If 
Else 
ConsultUrl=ConsultUrl & "/" 
End If 
End If 
ConArray=Split(ConsultUrl,"/") 

If Left(LCase(PrimitiveUrl),7) = "http://" then 
DefiniteUrl=Replace(PrimitiveUrl,"://",":\\") 
ElseIf Left(PrimitiveUrl,1) = "/" Then 
DefiniteUrl=ConArray(0) & PrimitiveUrl 
ElseIf Left(PrimitiveUrl,2)="./" Then 
PrimitiveUrl=Right(PrimitiveUrl,Len(PrimitiveUrl)-2) 
If Right(ConsultUrl,1)="/" Then 
DefiniteUrl=ConsultUrl & PrimitiveUrl 
Else 
DefiniteUrl=Left(ConsultUrl,InstrRev(ConsultUrl,"/")) & PrimitiveUrl 
End If 
ElseIf Left(PrimitiveUrl,3)="../" then 
Do While Left(PrimitiveUrl,3)="../" 
PrimitiveUrl=Right(PrimitiveUrl,Len(PrimitiveUrl)-3) 
Pi=Pi+1 
Loop 
For Ci=0 to (Ubound(ConArray)-1-Pi) 
If DefiniteUrl<>"" Then 
DefiniteUrl=DefiniteUrl & "/" & ConArray(Ci) 
Else 
DefiniteUrl=ConArray(Ci) 
End If 
Next 
DefiniteUrl=DefiniteUrl & "/" & PrimitiveUrl 
Else 
If Instr(PrimitiveUrl,"/")>0 Then 
PriArray=Split(PrimitiveUrl,"/") 
If Instr(PriArray(0),".")>0 Then 
If Right(PrimitiveUrl,1)="/" Then 
DefiniteUrl="http:\\" & PrimitiveUrl 
Else 
If Instr(PriArray(Ubound(PriArray)-1),".")>0 Then 
DefiniteUrl="http:\\" & PrimitiveUrl 
Else 
DefiniteUrl="http:\\" & PrimitiveUrl & "/" 
End If 
End If 
Else 
If Right(ConsultUrl,1)="/" Then 
DefiniteUrl=ConsultUrl & PrimitiveUrl 
Else 
DefiniteUrl=Left(ConsultUrl,InstrRev(ConsultUrl,"/")) & PrimitiveUrl 
End If 
End If 
Else 
If Instr(PrimitiveUrl,".")>0 Then 
If Right(ConsultUrl,1)="/" Then 
If right(LCase(PrimitiveUrl),3)=".cn" or right(LCase(PrimitiveUrl),3)="com" or right(LCase(PrimitiveUrl),3)="net" or right(LCase(PrimitiveUrl),3)="org" Then 
DefiniteUrl="http:\\" & PrimitiveUrl & "/" 
Else 
DefiniteUrl=ConsultUrl & PrimitiveUrl 
End If 
Else 
If right(LCase(PrimitiveUrl),3)=".cn" or right(LCase(PrimitiveUrl),3)="com" or right(LCase(PrimitiveUrl),3)="net" or right(LCase(PrimitiveUrl),3)="org" Then 
DefiniteUrl="http:\\" & PrimitiveUrl & "/" 
Else 
DefiniteUrl=Left(ConsultUrl,InstrRev(ConsultUrl,"/")) & "/" & PrimitiveUrl 
End If 
End If 
Else 
If Right(ConsultUrl,1)="/" Then 
DefiniteUrl=ConsultUrl & PrimitiveUrl & "/" 
Else 
DefiniteUrl=Left(ConsultUrl,InstrRev(ConsultUrl,"/")) & "/" & PrimitiveUrl & "/" 
End If 
End If 
End If 
End If 
If Left(DefiniteUrl,1)="/" then 
DefiniteUrl=Right(DefiniteUrl,Len(DefiniteUrl)-1) 
End if 
If DefiniteUrl<>"" Then 
DefiniteUrl=Replace(DefiniteUrl,"//","/") 
DefiniteUrl=Replace(DefiniteUrl,":\\","://") 
Else 
DefiniteUrl="$False$" 
End If 
End Function 

'================================================== 
'函数名:ReplaceSaveRemoteFile 
'作 用:替换、保存远程图片 
'参 数:ConStr ------ 要替换的字符串 
'参 数:SaveTf ------ 是否保存文件,False不保存,True保存 
'参 数: TistUrl------ 当前网页地址 
'================================================== 
Function ReplaceSaveRemoteFile(ConStr,InstallPath,strChannelDir,SaveTf,TistUrl) 
If ConStr="$False$" or ConStr="" or InstallPath="" or strChannelDir="" Then 
ReplaceSaveRemoteFile=ConStr 
Exit Function 
End If 
Dim TempStr,TempStr2,TempStr3,Re,Matches,Match,Tempi,TempArray,TempArray2 

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*.+?\.(gifjpgbmpjpegpsdpngsvgdxfwmftiff)" 
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=InstallPath&strChannelDir 
If CheckDir(InstallPath & strChannelDir)=False Then 
If Not CreateMultiFolder(InstallPath & strChannelDir) Then 
response.Write InstallPath & strChannelDir&"目录创建失败" 
SaveTf=False 
End If 
End If 
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$") 
'去掉重复图片结束 

response.Write "<br>发现图片:<br>"&Replace(TempStr,"$Array$","<br>") 

'转换相对图片地址开始 
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) 
response.Write "<br>保存到本地地址:"&InstallPath & strChannelDir & strFileName 
If SaveRemoteFile(InstallPath & strChannelDir & strFileName,RemoteFileUrl,RemoteFileUrl)=True Then 
response.Write "<font color=blue>成功</font><br>" 
PathTemp=InstallPath & strChannelDir & strFileName 
ConStr=Re.Replace(ConStr,PathTemp) 
Re.Pattern=InstallPath&strChannelDir 
UploadFiles=UploadFiles & "" & InstallPath & strChannelDir & strFileName 
Else 
PathTemp=RemoteFileUrl 
ConStr=Re.Replace(ConStr,PathTemp) 
End If 
ElseIf RemoteFileurl<>"$False$" and SaveTf=False Then'不保存图片 
Re.Pattern =TempArray(Tempi) 
ConStr=Re.Replace(ConStr,RemoteFileUrl) 
End If 
'******************************** 
Next 
Set Re=nothing 
ReplaceSaveRemoteFile=ConStr 
End function 

'================================================== 
'函数名:ReplaceSwfFile 
'作 用:解析动画路径 
'参 数:ConStr ------ 要替换的字符串 
'参 数: TistUrl------ 当前网页地址 
'================================================== 
Function ReplaceSwfFile(ConStr,TistUrl) 
If ConStr="$False$" or ConStr="" or TistUrl="" or TistUrl="$False$" Then 
ReplaceSwfFile=ConStr 
Exit Function 
End If 
Dim TempStr,TempStr2,TempStr3,Re,Matches,Match,Tempi,TempArray,TempArray2 

Set Re = New Regexp 
Re.IgnoreCase = True 
Re.Global = True 
Re.Pattern ="<object.+?[^\>]>" 
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 ="value\s*=\s*.+?\.swf" 
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 ="value\s*=\s*" 
TempStr=Re.Replace(TempStr,"") 
End If 
If TempStr="" or IsNull(TempStr)=True Then 
ReplaceSwfFile=ConStr 
Exit function 
End if 
TempStr=Replace(TempStr,"""","") 
TempStr=Replace(TempStr,"'","") 
TempStr=Replace(TempStr," ","") 

Set Matches=nothing 
Set Re=nothing 

'去掉重复文件开始 
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) 
Re.Pattern =TempArray(Tempi) 
ConStr=Re.Replace(ConStr,RemoteFileUrl) 
Next 
Set Re=nothing 
ReplaceSwfFile=ConStr 
End function 

'================================================== 
'过程名:SaveRemoteFile 
'作 用:保存远程的文件到本地 
'参 数:LocalFileName ------ 本地文件名 
'参 数:RemoteFileUrl ------ 远程文件URL 
'参 数:Referer ------ 远程调用文件(对付防采集的,用内容页地址,没有防的留空) 
'================================================== 
Function SaveRemoteFile(LocalFileName,RemoteFileUrl,Referer) 
SaveRemoteFile=True 
dim Ads,Retrieval,GetRemoteData 
Set Retrieval = Server.CreateObject("Microsoft.XMLHTTP") 
With Retrieval 
.Open "Get", RemoteFileUrl, False, "", "" 
if Referer<>"" then .setRequestHeader "Referer",Referer 
.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 

'================================================== 
'函数名: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,TempStr 
TempStr=LCase(ConStr) 
StartStr=LCase(StartStr) 
OverStr=LCase(OverStr) 
Over=Instr(1,TempStr,OverStr) 
If Over<=0 Then 
GetPaing="$False$" 
Exit Function 
Else 
If IncluR=True Then 
Over=Over+Len(OverStr) 
End If 
End If 
TempStr=Mid(TempStr,1,Over) 
Start=InstrRev(TempStr,StartStr) 
If IncluL=False Then 
Start=Start+Len(StartStr) 
End If 

If Start<=0 Or Start>=Over Then 
GetPaing="$False$" 
Exit Function 
End If 
ConTemp=Mid(ConStr,Start,Over-Start) 

ConTemp=Trim(ConTemp) 
'ConTemp=Replace(ConTemp," ","") 
ConTemp=Replace(ConTemp,",","") 
ConTemp=Replace(ConTemp,"'","") 
ConTemp=Replace(ConTemp,"""","") 
ConTemp=Replace(ConTemp,">","") 
ConTemp=Replace(ConTemp,"<","") 
ConTemp=Replace(ConTemp," ;","") 
GetPaing=ConTemp 
End Function 

'************************************************* 
'函数名:gotTopic 
'作 用:截字符串,汉字一个算两个字符,英文算一个字符 
'参 数:str ----原字符串 
' strlen ----截取长度 
'返回值:截取后的字符串 
'************************************************* 
function gotTopic(str,strlen) 
if str="" then 
gotTopic="" 
exit function 
end if 
dim l,t,c, i 
str=replace(replace(replace(replace(str," "," "),""",chr(34)),">",">"),"<","<") 
l=len(str) 
t=0 
for i=1 to l 
c=Abs(Asc(Mid(str,i,1))) 
if c>255 then 
t=t+2 
else 
t=t+1 
end if 
if t>=strlen then 
gotTopic=left(str,i) & "…" 
exit for 
else 
gotTopic=str 
end if 
next 
gotTopic=replace(replace(replace(replace(gotTopic," "," "),chr(34),"""),">",">"),"<","<;") 
end function 

'*********************************************** 
'函数名:JoinChar 
'作 用:向地址中加入 ? 或 & 
'参 数:strUrl ----网址 
'返回值:加了 ? 或 & 的网址 
'*********************************************** 
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 


'************************************************** 
'函数名:CreateKeyWord 
'作 用:由给定的字符串生成关键字 
'参 数:Constr---要生成关键字的原字符串 
'返回值:生成的关键字 
'************************************************** 
Function CreateKeyWord(byval Constr,Num) 
If Constr="" or IsNull(Constr)=True or Constr="$False$" Then 
CreateKeyWord="$False$" 
Exit Function 
End If 
If Num="" or IsNumeric(Num)=False Then 
Num=2 
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,">","") 
Constr=Replace(Constr,"""","") 
Constr=Replace(Constr,"?","") 
Constr=Replace(Constr,"*","") 
Constr=Replace(Constr,"","") 
Constr=Replace(Constr,",","") 
Constr=Replace(Constr,".","") 
Constr=Replace(Constr,"/","") 
Constr=Replace(Constr,"\","") 
Constr=Replace(Constr,"-","") 
Constr=Replace(Constr,"@","") 
Constr=Replace(Constr,"#","") 
Constr=Replace(Constr,"$","") 
Constr=Replace(Constr,"%","") 
Constr=Replace(Constr,"&","") 
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,Num) 
Next 
If Len(ConstrTemp)<254 Then 
ConstrTemp=ConstrTemp & "" 
Else 
ConstrTemp=Left(ConstrTemp,254) & "" 
End If 
CreateKeyWord=ConstrTemp 
End Function 

'================================================== 
'函数名:CheckUrl 
'作 用:检查Url 
'参 数:strUrl ------ 要检查Url 
'================================================== 
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 

'================================================== 
'函数名:ScriptHtml 
'作 用:过滤html标记 
'参 数: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 

'================================================== 
'函数名:RemoveHTML 
'作 用:完全去除html标记 
'参 数:strHTML ------ 要过滤的字符串 
'================================================== 
Function RemoveHTML(strHTML) 
Dim objRegExp, Match, Matches 
Set objRegExp = New Regexp 

objRegExp.IgnoreCase = True 
objRegExp.Global = True 
'取闭合的<> 
objRegExp.Pattern = "<.+?>" 
'进行匹配 
Set Matches = objRegExp.Execute(strHTML) 

' 遍历匹配集合,并替换掉匹配的项目 
For Each Match in Matches 
strHtml=Replace(strHTML,Match.Value,"") 
Next 
RemoveHTML=strHTML 
Set objRegExp = Nothing 
End Function 

'================================================== 
'函数名:CheckDir 
'作 用:检查文件夹是否存在 
'参 数:FolderPath ------ 文件夹路径 
'================================================== 
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 

'================================================== 
'函数名:MakeNewsDir 
'作 用:创建文件夹 
'参 数:foldername ------ 文件夹名 
'================================================== 
Function MakeNewsDir(byval foldername) 
dim fso 
Set fso = Server.CreateObject("Scri" & "pti" & "ng.Fil" & "eSyst" & "emOb" & "ject") 
fso.CreateFolder(Server.MapPath(foldername)) 
If fso.FolderExists(Server.MapPath(foldername)) Then 
MakeNewsDir = True 
Else 
MakeNewsDir = False 
End If 
Set fso = nothing 
End Function 

'================================================== 
'函数名:DelDir 
'作 用:创建文件夹 
'参 数:foldername ------ 文件夹名 
'================================================== 
Function DelDir(byval foldername) 
dim fso 
Set fso = Server.CreateObject("Scri" & "pti" & "ng.Fil" & "eSyst" & "emOb" & "ject") 
If fso.FolderExists(Server.MapPath(foldername)) Then '判断文件夹是否存在 
fso.DeleteFolder (Server.MapPath(foldername)) '删除文件夹 
End If 
Set fso = nothing 
End Function 

'************************************************** 
'函数名:IsObjInstalled 
'作 用:检查组件是否已经安装 
'参 数:strClassString ----组件名 
'返回值:True ----已经安装 
' False ----没有安装 
'************************************************** 
Function IsObjInstalled(strClassString) 
IsObjInstalled = False 
Err = 0 
Dim xTestObj 
Set xTestObj = Server.CreateObject(strClassString) 
If 0 = Err Then IsObjInstalled = True 
Set xTestObj = Nothing 
Err = 0 
End Function 

'************************************************** 
'函数名:strLength 
'作 用:求字符串长度。汉字算两个字符,英文算一个字符。 
'参 数:str ----要求长度的字符串 
'返回值:字符串长度 
'************************************************** 
function strLength(str) 
ON ERROR RESUME NEXT 
dim WINNT_CHINESE 
WINNT_CHINESE = (len("中国")=2) 
if WINNT_CHINESE then 
dim l,t,c 
dim i 
l=len(str) 
t=l 
for i=1 to l 
c=asc(mid(str,i,1)) 
if c<0 then c=c+65536 
if c>255 then 
t=t+1 
end if 
next 
strLength=t 
else 
strLength=len(str) 
end if 
if err.number<>0 then err.clear 
end function 


'**************************************************** 
'函数名:CreateMultiFolder 
'作 用:创建多级目录,可以创建不存在的根目录 
'参 数:要创建的目录名称,可以是多级 
'返回逻辑值:True成功,False失败 
'创建目录的根目录从当前目录开始 
'**************************************************** 
Function CreateMultiFolder(ByVal CFolder) 
Dim objFSO,PhCreateFolder,CreateFolderArray,CreateFolder 
Dim i,ii,CreateFolderSub,PhCreateFolderSub,BlInfo 
BlInfo = False 
CreateFolder = CFolder 
On Error Resume Next 
Set objFSO = Server.CreateObject("Scri" & "pti" & "ng.Fil" & "eSyst" & "emOb" & "ject") 
If Err Then 
Err.Clear() 
Exit Function 
End If 
CreateFolder = Replace(CreateFolder,"\","/") 
If Left(CreateFolder,1)="/" Then 
'CreateFolder = Right(CreateFolder,Len(CreateFolder)-1) 
End If 
If Right(CreateFolder,1)="/" Then 
CreateFolder = Left(CreateFolder,Len(CreateFolder)-1) 
End If 
CreateFolderArray = Split(CreateFolder,"/") 
For i = 0 to UBound(CreateFolderArray) 
CreateFolderSub = "" 
For ii = 0 to i 
CreateFolderSub = CreateFolderSub & CreateFolderArray(ii) & "/" 
Next 
PhCreateFolderSub = Server.MapPath(CreateFolderSub) 

'response.Write PhCreateFolderSub&"<br>" 

If Not objFSO.FolderExists(PhCreateFolderSub) Then 
objFSO.CreateFolder(PhCreateFolderSub) 
End If 
Next 
If Err Then 
Err.Clear() 
Else 
BlInfo = True 
End If 
Set objFSO=nothing 
CreateMultiFolder = BlInfo 
End Function 

'************************************************** 
'函数名:FSOFileRead 
'作 用:使用FSO读取文件内容的函数 
'参 数:filename ----文件名称 
'返回值:文件内容 
'************************************************** 
function FSOFileRead(filename) 
Dim objFSO,objCountFile,FiletempData 
Set objFSO = Server.CreateObject("Scripting.FileSystemObject") 
Set objCountFile = objFSO.OpenTextFile(Server.MapPath(filename),1,True) 
FSOFileRead = objCountFile.ReadAll 
objCountFile.Close 
Set objCountFile=Nothing 
Set objFSO = Nothing 
End Function 

'************************************************** 
'函数名:FSOlinedit 
'作 用:使用FSO读取文件某一行的函数 
'参 数:filename ----文件名称 
' lineNum ----行数 
'返回值:文件该行内容 
'************************************************** 
function FSOlinedit(filename,lineNum) 
if linenum < 1 then exit function 
dim fso,f,temparray,tempcnt 
set fso = server.CreateObject("scripting.filesystemobject") 
if not fso.fileExists(server.mappath(filename)) then exit function 
set f = fso.opentextfile(server.mappath(filename),1) 
if not f.AtEndofStream then 
tempcnt = f.readall 
f.close 
set f = nothing 
temparray = split(tempcnt,chr(13)&chr(10)) 
if lineNum>ubound(temparray)+1 then 
exit function 
else 
FSOlinedit = temparray(lineNum-1) 
end if 
end if 
end function 

'************************************************** 
'函数名:FSOlinewrite 
'作 用:使用FSO写文件某一行的函数 
'参 数:filename ----文件名称 
' lineNum ----行数 
' Linecontent ----内容 
'返回值:无 
'************************************************** 
function FSOlinewrite(filename,lineNum,Linecontent) 
if linenum < 1 then exit function 
dim fso,f,temparray,tempCnt 
set fso = server.CreateObject("scripting.filesystemobject") 
if not fso.fileExists(server.mappath(filename)) then exit function 
set f = fso.opentextfile(server.mappath(filename),1) 
if not f.AtEndofStream then 
tempcnt = f.readall 
f.close 
temparray = split(tempcnt,chr(13)&chr(10)) 
if lineNum>ubound(temparray)+1 then 
exit function 
else 
temparray(lineNum-1) = lineContent 
end if 
tempcnt = join(temparray,chr(13)&chr(10)) 
set f = fso.createtextfile(server.mappath(filename),true) 
f.write tempcnt 
end if 
f.close 
set f = nothing 
end function 

'************************************************** 
'函数名:Htmlmake 
'作 用:使用FSO创建文件 
'参 数:HtmlFolder ----路径 
' HtmlFilename ----文件名 
' HtmlContent ----内容 
'************************************************** 
function Htmlmake(HtmlFolder,HtmlFilename,HtmlContent) 
On Error Resume Next 
dim filepath,fso,fout 
filepath = HtmlFolder&"/"&HtmlFilename 
Set fso = Server.CreateObject("Scripting.FileSystemObject") 
If fso.FolderExists(HtmlFolder) Then 
Else 
CreateMultiFolder(HtmlFolder) 
&, ;nbs, p; End If 
Set fout = fso.Createtextfile(server.mappath(filepath),true) 
fout.writeline HtmlContent 
fout.close 
set fso=nothing 
Set fso = Server.CreateObject("Scripting.FileSystemObject") 
If fso.fileexists(Server.MapPath(filepath)) Then 
Response.Write "文件<font color=red>"&HtmlFilename&"</font>已生成!<br>" 
Else 
'Response.Write Server.MapPath(filepath) 
Response.Write "文件<font color=red>"&HtmlFilename&"</font>未生成!<br>" 
End If 
Set fso = nothing 
End function 

'************************************************** 
'函数名:Htmldel 
'作 用:使用FSO删除文件 
'参 数:HtmlFolder ----路径 
' HtmlFilename ----文件名 
'************************************************** 
Sub Htmldel(HtmlFolder,HtmlFilename) 
dim filepath,fso 
filepath = HtmlFolder&"/"&HtmlFilename 
Set fso = CreateObject("Scripting.FileSystemObject") 
fso.DeleteFile(Server.mappath(filepath)) 
Set fso = nothing 
Set fso = Server.CreateObject("Scripting.FileSystemObject") 
If fso.fileexists(Server.MapPath(filepath)) Then 
Response.Write "文件<font color=red>"&HtmlFilename&"</font>未删除!<br>" 
Else 
'Response.Write Server.MapPath(filepath) 
Response.Write "文件<font color=red>"&HtmlFilename&"</font>已删除!<br>" 
End If 
Set fso = nothing 
End Sub 

'================================================= 
'过程名:HTMLEncode 
'作 用:过滤HTML格式 
'参 数:fString ----转换内容 
'================================================= 
function HTMLEncode(ByVal fString) 
If IsNull(fString)=False or fString<>"" or fString<>"$False$" Then 
fString = Replace(fString, ">", ">") 
fString = Replace(fString, "<", "<") 
fString = Replace(fString, Chr(32), " ") 
fString = Replace(fString, Chr(9), " ") 
fString = Replace(fString, Chr(34), """) 
fString = Replace(fString, Chr(39), "'") 
fString = Replace(fString, Chr(13), "") 
fString = Replace(fString, " ", " ") 
fString = Replace(fString, CHR(10) & CHR(10), "</P><P>") 
fString = Replace(fString, Chr(10), "<br /> ") 
HTMLEncode = fString 
else 
HTMLEncode = "$False$" 
end if 
end function 

'================================================= 
'过程名:unHTMLEncode 
'作 用:还原HTML格式 
'参 数:fString ----转换内容 
'================================================= 
function unHTMLEncode(ByVal fString) 
If IsNull(fString)=False or fString<>"" or fString<>"$False$" Then 
fString = Replace(fString, ">", ">") 
fString = Replace(fString, "<", "<") 
fString = Replace(fString, " ", Chr(32)) 
fString = Replace(fString, """, Chr(34)) 
fString = Replace(fString, "'", Chr(39)) 
fString = Replace(fString, "", Chr(13)) 
fString = Replace(fString, " ", " ") 
fString = Replace(fString, "</P><P>" , CHR(10) & CHR(10)) 
fString = Replace(fString, "<br> ", Chr(10)) 
unHTMLEncode = fString 
else 
unHTMLEncode = "$False$" 
end if 
end function 

function unhtmllist(content) 
unhtmllist=content 
if content <> "" then 
unhtmllist=replace(unhtmllist,"'","";") 
unhtmllist=replace(unhtmllist,chr(10),"") 
unHtmllist=replace(unHtmllist,chr(13),"<br>") 
end if 
end function 

function unhtmllists(content) 
unhtmllists=content 
if content <> "" then 
unhtmllists=replace(unhtmllists,"""",""") 
unhtmllists=replace(unhtmllists,"'",""") 
unhtmllists=replace(unhtmllists,chr(10),"") 
unHtmllists=replace(unHtmllists,chr(13),"<br>") 
end if 
end function 

function htmllists(content) 
htmllists=content 
if content <> "" then 
htmllists=replace(htmllists,"‘'","""") 
htmllists=replace(htmllists,""","'") 
htmllists=replace(htmllists,"<br>",chr(13)&chr(10)) 
end if 
end function 

function uhtmllists(content) 
uhtmllists=content 
if content <> "" then 
uhtmllists=replace(uhtmllists,"""","‘'") 
uhtmllists=replace(uhtmllists,"'","";") 
uhtmllists=replace(uhtmllists,chr(10),"") 
uHtmllists=replace(uHtmllists,chr(13),"<br>") 
end if 
end function 

'================================================= 
'过程: Sleep 
'功能: 程序在此晢停几秒 
'参数: iSeconds 要暂停的秒数 
'================================================= 
Sub Sleep(iSeconds) 
response.Write "<font color=blue>开始暂停 "&iSeconds&" 秒</font><br>" 
Dim t:t=Timer() 
While(Timer()<t+iSeconds) 
'Do Nothing 
Wend 
response.Write "<font color=blue>暂停 "&iSeconds&" 秒结束</font><br>" 
End Sub 

'================================================== 
'函数名:MyArray 
'作 用:提取标签,以分隔 
'参 数:ConStr ------提取地址的原字符 
'================================================== 
Function MyArray(Byval ConStr) 
Set objRegExp = New Regexp 
objRegExp.IgnoreCase = True 
objRegExp.Global = True 
objRegExp.Pattern = "({).+?(})" 
Set Matches =objRegExp.Execute(ConStr) 
For Each Match in Matches 
TempStr=TempStr & "" & Match.Value 
Next 
Set Matches=nothing 

TempStr=Right(TempStr,Len(TempStr)-1) 
objRegExp.Pattern ="{" 
TempStr=objRegExp.Replace(TempStr,"") 
objRegExp.Pattern ="}" 
TempStr=objRegExp.Replace(TempStr,"") 
Set objRegExp=nothing 
Set Matches=nothing 

TempStr=Replace(TempStr,"$","") 

If TempStr="" then 
MyArray="在代码中没有可提取的东西" 
Else 
MyArray=TempStr 
End if 
End Function 

'================================================== 
'函数名:randm 
'作 用:产生6位随机数 
'================================================== 
Function randm 
randomize 
randm=Int((900000*rnd)+100000) 
End Function 
%>