zapline 发表于 2010-3-14 12:42

编程小练习(9)

假设想做一个百度踩空间工具
那么我们可能需要获取一份空间地址的列表
我这里提供一种方法:
每次访问http://hi.baidu.com/st/moreonline.html
可以随机得到100名在线用户的信息
进过分析,发现这些信息又保存在一个XML文件中
地址为http://hi.baidu.com/sys/file/moreonline.xml
我们需要做的是,从这个XML文件中得到一份空间地址列表
实现方法可以是解析XML,也可以把XML文件当作普通文本文件然后自己用匹配算法来得到地址

零芽 发表于 2010-3-14 13:50

学习学习!

obaby 发表于 2010-3-14 19:02

现在题目是更多的趋向于实战了啊?原来的算法题都不见了。:)eee

zapline 发表于 2010-3-15 12:16

现在题目是更多的趋向于实战了啊?原来的算法题都不见了。
obaby 发表于 2010-3-14 19:02 http://www.52pojie.cn/images/common/back.gif


    这道题目除去下载和解析XML文件,可以当作是关于字符串的算法题

dzeo 发表于 2010-3-15 13:43

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

745327354 发表于 2010-3-15 20:54

额,看不懂

女孩不可信 发表于 2010-3-15 21:43

.版本 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

没时间优化了,给出源码   想玩的自己捣鼓吧, 花了好几个小时呢

zapline 发表于 2010-3-15 23:27

没时间优化了,给出源码   想玩的自己捣鼓吧, 花了好几个小时呢
blueapplez 发表于 2010-3-15 22:57 http://www.52pojie.cn/images/common/back.gif


    呵呵 空间名和空间地址一般不同
例如我的空间http://hi.baidu.com/zapline/空间名是 老肉鸡的世界
你这个里面构造的地址是 http://hi.baidu.com/老肉鸡的世界

无奈a 发表于 2010-3-15 23:52

学习学习。。。。。。。。
页: [1] 2
查看完整版本: 编程小练习(9)