编程小练习(9)
假设想做一个百度踩空间工具那么我们可能需要获取一份空间地址的列表
我这里提供一种方法:
每次访问http://hi.baidu.com/st/moreonline.html
可以随机得到100名在线用户的信息
进过分析,发现这些信息又保存在一个XML文件中
地址为http://hi.baidu.com/sys/file/moreonline.xml
我们需要做的是,从这个XML文件中得到一份空间地址列表
实现方法可以是解析XML,也可以把XML文件当作普通文本文件然后自己用匹配算法来得到地址 学习学习! 现在题目是更多的趋向于实战了啊?原来的算法题都不见了。:)eee 现在题目是更多的趋向于实战了啊?原来的算法题都不见了。
obaby 发表于 2010-3-14 19:02 http://www.52pojie.cn/images/common/back.gif
这道题目除去下载和解析XML文件,可以当作是关于字符串的算法题 vb 6.0
Private Sub Command1_Click()
On Error Resume Next
Dim str As String
str = Inet1.OpenURL("http://hi.baidu.com/sys/file/moreonline.xml")
m1 = "<id><![CDATA[" '截取关键字
m2 = "]]></id>" '截取关键字
Do
n1 = InStr(str, m1)
n2 = InStr(str, m2)
If n1 = 0 Then Exit Do
yhid = Mid(str, n1 + Len(m1), n2 - n1 - Len(m1))
List1.AddItem yhid
str = Right(str, Len(str) - n2)
Loop
End Sub
额,看不懂 .版本 2
.程序集 RegExp_, , 公开
.程序集变量 RegExp, 对象
.程序集变量 MatchCollection, 对象
.子程序 _初始化, , , 当基于本类的对象被创建后,此方法会被自动调用
.子程序 _销毁, , , 当基于本类的对象被销毁前,此方法会被自动调用
RegExp.清除 ()
.子程序 创建_, 逻辑型, 公开
.参数 正则, 文本型
RegExp.清除 ()
RegExp.创建 (“VBScript.RegExp”, )
RegExp.写属性 (“IgnoreCase”, 真)
RegExp.写属性 (“Global”, 真)
RegExp.写属性 (“Pattern”, 正则)
返回 (真)
.子程序 搜索_, 整数型, 公开
.参数 文本, 文本型
MatchCollection = RegExp.对象型方法 (“Execute”, 文本)
返回 (MatchCollection.读数值属性 (“Count”, ))
.子程序 取子匹配文本_, 文本型, 公开
.参数 匹配索引, 整数型
.参数 子索引, 整数型, , 。
.局部变量 Match, 对象
.局部变量 SubMatches, 对象
.局部变量 Ret, 变体型
Match = MatchCollection.读对象型属性 (“Item”, 匹配索引 - 1)
SubMatches = Match.读对象型属性 (“SubMatches”, )
Ret = SubMatches.读属性 (“Item”, 子索引 - 1)
返回 (Ret.取文本 ())
.版本 2
.程序集 程序集1
.子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行
.局部变量 RegExp, RegExp_
.局部变量 i, 整数型
.局部变量 数据, 字节集
.如果真 (RegExp.创建_ (“<id>.+A\[(\S+)]]>”))
数据 = 读网页内容_ (“http://hi.baidu.com/sys/file/moreonline.xml”)
.计次循环首 (RegExp.搜索_ (到文本 (数据)), i)
标准输出 (, RegExp.取子匹配文本_ (i, 1) + #换行符)
.计次循环尾 ()
标准输出 (, “共计用户数量:” + 到文本 (i - 1))
.如果真结束
标准输入 ()
返回 (0)' 可以根据您的需要返回任意数值
.子程序 读网页内容_, 字节集
.参数 网站地址, 文本型
.局部变量 XML对象, 对象
.如果真 (XML对象.创建 (“MSXML2.XMLHTTP”, ) = 假)
.如果真 (XML对象.创建 (“Microsoft.XMLHTTP”, ) = 假)
返回 ({})
.如果真结束
.如果真结束
XML对象.方法 (“open”, “GET”, 网站地址, 假)
XML对象.方法 (“send”, )
返回 (XML对象.读属性 (“responseBody”, ).取字节集 ())
没时间优化了,给出源码 想玩的自己捣鼓吧, 花了好几个小时呢 没时间优化了,给出源码 想玩的自己捣鼓吧, 花了好几个小时呢
blueapplez 发表于 2010-3-15 22:57 http://www.52pojie.cn/images/common/back.gif
呵呵 空间名和空间地址一般不同
例如我的空间http://hi.baidu.com/zapline/空间名是 老肉鸡的世界
你这个里面构造的地址是 http://hi.baidu.com/老肉鸡的世界 学习学习。。。。。。。。
页:
[1]
2