最近断断续续在网上看小说,小说写全的不多,都看完了。之后陆续看的比较好看的一些小说都在待续的状态中,每天要去几个常看的小说站点看一下是否有更新,很是繁琐,一怒之下,写了一个VB Script脚本,专门去搜索指定的页面,查看是否有更新。放在这里,存档之。
注:如果要运行脚本,需要XML 3.0支持。
'****************************************************************************** ' Script Name: checkfav.vbs ' ' V1.0 ' Check the special url's content and compare with stored content before ' ' By Fog 2004-09-10 '****************************************************************************** Const C_ORI = 0 Const C_NEW = 1
Dim url(7) url(0)="http://blog.csdn.net/fogdragon/" url(0)="http://www.jinyuan.org/" strShow = url(0)
intReady = ReadyForGet(url(0)) Call GetCurrentPage(url(0)) If intReady = 1 Then intDiffByte = CompareURL(CreateName( GetURLSite(url(0)), C_New), CreateName( GetURLSite(url(0)), C_ORI)) If intDiffByte = 0 Then strShow = strShow & " 无更新" Else strShow = strShow & intDiffByte End If Else strShow = strShow & " 创建对比页面成功。" End If
WScript.Echo strShow
' 检查是否有上次获取的记录,如果有,在文件名后加ori,作为备份,将来比较 Function ReadyForGet(DescURL) Dim strOriName, strNewName, objFSO Set objFSO = CreateObject("Scripting.FileSystemObject") strNewName = CreateName( GetURLSite(DescURL), C_New)
If objFSO.FileExists(strNewName) = True Then strOriName = CreateName( GetURLSite(DescURL), C_ORI) objFSO.CopyFile strNewName, strOriName, True ReadyForGet = 1 Else ReadyForGet = 0 End If End Function
' 获得指定URL的页面内容 Function GetCurrentPage(DescURL) Dim objHTTP, strCodebase, objFSO, strFileName, objLogFile Set objHTTP = CreateObject("MSXML2.XMLHTTP") Call objHTTP.Open("GET", DescURL, FALSE) objHTTP.Send strCodebase = GetCodeBase(objHTTP.getResponseHeader("Content-Type")) strIndex=BytesToBstr(objHTTP.ResponseBody, strCodebase) set objHTTP = Nothing
Set objFSO = CreateObject("Scripting.FileSystemObject") strFileName = CreateName( GetURLSite(DescURL), C_NEW ) Set objLogFile = objFSO.CreateTextFile (strFileName, True) objLogFile.Write strIndex objLogFile.Close Set objFSO=Nothing End Function
Function CompareURL(NewName, OriName) Dim objFSO, fNew, fOri Set objFSO = CreateObject("Scripting.FileSystemObject") Set fNew = objFSO.GetFile(NewName) Set fOri = objFSO.GetFile(OriName) CompareURL = fNew.Size - fOri.Size End Function
'使用Adodb.Stream处理二进制数据 Function BytesToBstr(strBody,CodeBase) Dim objStream set objStream = CreateObject("Adodb.Stream") objStream.Type = 1 objStream.Mode =3 objStream.Open objStream.Write strBody objStream.Position = 0 objStream.Type = 2 objStream.Charset = CodeBase BytesToBstr = objStream.ReadText objStream.Close set objStream = nothing End Function
' 从完整的URL地址取得出网站域名 Function GetURLSite(strURL) GetURLSite = GetBlock(strURL, "http://", Chr(47)) End Function
' 取得HTTP返回值中的字符集标识 Function GetCodeBase(StrHead) GetCodeBase = GetBlock(StrHead, "charset=", "") If Len(GetCodeBase) = 0 Then GetCodeBase = "GB2312" End Function
' 创建文件名 Function CreateName(strSource, intType) Select Case intType Case C_NEW CreateName = strSource & ".htm" Case C_ORI CreateName = strSource & ".ori.htm" End Select End Function
' 获得两个指定特征字符串中间的字符 Function GetBlock(strsource, strdesstart, strdesend) Dim istart, iend, s istart = InStr(strsource, strdesstart) If istart = 0 Then GetBlock = "" Else If Len(strdesend) > 0 Then iend = InStr(istart + Len(strdesstart), strsource, strdesend) istart = istart + Len(strdesstart) GetBlock = Mid(strsource, istart, iend - istart) Else GetBlock = Right(strsource, Len(strsource) - istart - Len(strdesstart) + 1) End If End If End Function

|