|
lisyofun
初级用户
积分 87
发帖 61
注册 2008-9-18
状态 离线
|
『楼 主』:
VBS正则提取源文件指定内容
这里是源文件
http://upload.cn-dos.net/img/1682.txt
我想用vbs提取最近一条留言的用户名,标题,留言时间,留言IP。
但我只能提取用户名的内容,其它的不知道如何提取,请各位大侠帮忙。
源文件里前面的三条留言是公告,以后可能会继续添加公告,所以提取的内容要跳过它。
以下是我写的提取用户名的vbs.
wscript.echo "用户名是:" & RegExpTest("<li class=""userName"">([^<]*)</li>",ReadText("sourcefile.txt"))
Function RegExpTest(Patrn,strng)
Set RegEx1=New RegExp
RegEx1.Pattern = Patrn
RegEx1.IgnoreCase=True
RegEx1.Global=Fasle
Set Matches =RegEx1.Execute(strng)
For Each Match In Matches
i=i+1
RetStr=RetStr & Match.SubMatches(0)
If i Mod 2 = 0 Then
RetStr=RetStr & vbCrLf
End If
Next
RegExpTest=RetStr
End Function
Function ReadText(FilePath)
Dim Fso,Rso
Set Fso=CreateObject("Scripting.FileSystemObject")
Set Gso=Fso.GetFile(FilePath)
Set Rso=Gso.OpenAsTextStream(1)
ReadText=Rso.ReadAll
End Function
|
|
2009-9-9 21:30 |
|
|
qinchun36
高级用户
据说是李先生
积分 609
发帖 400
注册 2008-4-23
状态 离线
|
『第
2 楼』:
Dim sourceStrng, regUserName, regMsgTitle, regMsgTime, regIP
sourceStrng = ReadText("sourcefile.txt")
regUserName = "[.\s]*\"&chr(34)&"userName\"&chr(34)&">(.*)</li>[.\s]*"
regMsgTitle = "[.\s]*\"&chr(34)&"msgTitle\"&chr(34)&".*<h3>(.*)</h3></div>[.\s]*"
regMsgTime = "[.\s]*\"&chr(34)&"msgTime\"&chr(34)&".*>(.*)</div>[.\s]*"
regIP = "[.\s]*留言IP\D*(\d+\.\d+\.\d+\.\d+)[.\s]*"
wscript.echo _
"用户名: " & vbtab & RegExpTest(regUserName,sourceStrng) & vbcrlf &_
"留言标题: " & vbtab & RegExpTest(regMsgTitle,sourceStrng) & vbcrlf &_
"留言时间: " & vbtab & RegExpTest(regMsgTime,sourceStrng) & vbcrlf &_
"留言IP: " & vbtab & RegExpTest(regIP,sourceStrng)
Function RegExpTest(Patrn,strng)
Dim RetStr
Set RegEx1=New RegExp
RegEx1.Pattern = Patrn
RegEx1.IgnoreCase=True
RegEx1.Global=True
Set Matches =RegEx1.Execute(strng)
For Each Match In Matches
RetStr = Match.SubMatches(0)
Next
RegExpTest=RetStr
End Function
Function ReadText(FilePath)
Dim Fso,Rso
Set Fso=CreateObject("Scripting.FileSystemObject")
Set Gso=Fso.GetFile(FilePath)
Set Rso=Gso.OpenAsTextStream(1)
ReadText=Rso.ReadAll
End Function
|
|
2009-9-9 23:21 |
|
|
lisyofun
初级用户
积分 87
发帖 61
注册 2008-9-18
状态 离线
|
|
2009-9-10 18:56 |
|
|
qinchun36
高级用户
据说是李先生
积分 609
发帖 400
注册 2008-4-23
状态 离线
|
『第
4 楼』:
“我想用vbs提取最近一条留言” ,最近不就是最后发表!
|
|
2009-9-10 22:28 |
|
|
everest79
金牌会员
一叶枝头,万树皆春
积分 2564
发帖 1127
注册 2006-12-25
状态 离线
|
『第
5 楼』:
Dim ie
Set ie = CreateObject("InternetExplorer.Application")
ie.NaviGate "C:\Documents and Settings\Administrator\桌面\fd.htm"
For Each Aelement In ie.document.anchors '可描述A标签集合
If Aelement.id > msgindex Then '比较A标签描述
msgindex = Aelement.id '记录更大的msgid
Set objele = Aelement '记录msgid最大的A对象
End If
Next
msgbox objele.childNodes(0).outertext '显示被纪录的A对象的下级文本
ie.quit '退出ie
Set ie = Nothing
|
49206C6F766520796F752067757973 54656C3A3133383238343036373837 |
|
2009-9-11 04:41 |
|
|
lisyofun
初级用户
积分 87
发帖 61
注册 2008-9-18
状态 离线
|
『第
6 楼』:
是除了公告外的第一条留言,不好意思,是我没表达清楚。
|
|
2009-9-11 13:09 |
|
|
lisyofun
初级用户
积分 87
发帖 61
注册 2008-9-18
状态 离线
|
『第
7 楼』:
谢谢everest79,原来还能这样啊。。学习中
|
|
2009-9-11 13:11 |
|
|
cike09
新手上路
积分 17
发帖 11
注册 2009-9-12 来自 宇宙·······禹州
状态 离线
|
『第
8 楼』:
晕晕晕~~~~~~~~~~~~~~~~~
|
|
2009-9-12 04:52 |
|
|
lisyofun
初级用户
积分 87
发帖 61
注册 2008-9-18
状态 离线
|
『第
9 楼』:
怎样才只提取指定的某一条内容呢。。同时匹配的太多了,我只想要某一条该怎么做呢
|
|
2009-9-13 14:59 |
|
|
asnahu
初级用户
积分 99
发帖 53
注册 2006-8-18
状态 离线
|
『第
10 楼』:
everest79的代码看不懂啊,能否讲解一下
|
|
2009-10-3 15:35 |
|
|
everest79
金牌会员
一叶枝头,万树皆春
积分 2564
发帖 1127
注册 2006-12-25
状态 离线
|
『第
11 楼』:
Dim ie
Set ie = CreateObject("InternetExplorer.Application")
ie.NaviGate "C:\Documents and Settings\Administrator\桌面\fd.htm"
'加载需要解析的网页
For Each Aelement In ie.document.anchors '可描述A标签集合 ie.document.anchors 表示文档中<a id="msg****">的集合,然后使用for each枚举这个集合,临时对象为Aelement
If Aelement.id > msgindex Then '比较A标签描述 Aelement.id的值就是<a id="msg***">中的msg***
msgindex = Aelement.id '记录更大的msgid
Set objele = Aelement '记录msgid最大的A对象
End If
Next
msgbox objele.childNodes(0).outertext '显示被纪录的A对象的下级文本childNodes是当前对象objele所有子对象集合,以数组方式访问(0)就是第一个子对象,<a id="msg***">下只有一个对象就是<div class="msgArea">,此时使用outertext输出了这个div内的所有文本内容
<a id="msg***">
<div class="msgArea">
dfdsadf
</div>
ie.quit '退出ie
Set ie = Nothing
|
49206C6F766520796F752067757973 54656C3A3133383238343036373837 |
|
2009-10-3 18:21 |
|
|
asnahu
初级用户
积分 99
发帖 53
注册 2006-8-18
状态 离线
|
『第
12 楼』:
document.anchors果然很强大^^
谢谢答复,节日快乐~!
|
|
2009-10-3 19:17 |
|