超级大奖,用自制彩票程序查询

技术与开发

彩票!中大奖!!不想当将军的士兵不是好士兵,不想中大奖的彩民不是真正的彩民!期待开奖的日子是一种煎熬,查询各期彩票中奖号码是一种痛苦,本着减少彩民们煎熬和痛苦的宗旨,本期我们教大家用VB设计一种快速获取中国体彩官方网站开奖数据的程序,节省查询时间,提高效率。

设计这个程序,关键就是要提取体彩网页中的相关数据,这种用VB提取网页数据的技术还可以用在很多程序设计里面,例如股票、基金查询程序。下面我们以七星彩为例,详细介绍程序的编写方法。七星彩是七位数中有两位或者两位以上与开奖数字连续相同即可中奖的玩法。

程序设计思路

首先获取网页数据,然后进行数据提取,得到查询结果并以文本格式保存,程序设计流如图所示。

37-f14-1.jpg

一、获取页面URL地址

1.查询页面的URL地址的规则

打开体彩网站七星彩的开奖页面(http://result.lottery.gov.cn/qxc/),可以发现每一期的七星彩开奖页面都对应一个html,并且html的命名规则是以“qxc”三个字母后跟当期期数。 比如第 07005 期(2007年第005期)查询页面的URL地址为http://result.lottery.gov.cn/qxc/qxc07005.html。

2.分析获取URL地址

首先我们要做的是获取查询页面的URL地址,并把获取的URL地址存储到程序的一个字符串变量中。根据查询页面的URL地址规则,我们很容易能实现这一点,2007年第N期查询页面的URL地址为http://result.lottery.gov.cn/qxc/ +"qxc07"+N,N的取值规则是:

如果查询的期数为1-9期,需要增加字符串00,比如005.html;如果查询的期数为10-99期,需要增加字符串0,比如015.html;如果查询的期数大于等于100期,则不需要增加字符串,比如115.html。例如:

UrlTxt.Text=http://result.lottery.gov.cn/qxc/

Url = UrlTxt.Text & "qxc" & "07" & "00" & Trim(Str(D)) & ".html" '获得URL地址

二、获取页面数据

获取了URL地址后,下面的任务就是如何把这个页面的源文件提取出来。一个html的源文件可以这样查看:在Internet Explorer浏览器中,点击“查看”菜单,选择“源文件”,这个页面的源文件就在记事本中被打开了。

我们需要把记事本中的所有字符串提取出来,并显示在TextBox文本框中,这是至关重要的一步,也是整个程序的灵魂,这就需要使用一个API函数URLDownloadToFile,此函数的功能是把查询彩票的html源文件下载下来,格式为:

URLDownloadToFile 0, Url, tmpfile, 0, 0

Url:前面获取的页面地址

Tmpfile:临时文件,使用前需要定义,比如Const tmpfile As String = "c:\tmp.txt"

之后在TextBox文本框就可以显示这个临时文件的内容了:

YuanMa.Text = tmp '在源码文本框内显示,之后删除临时文件

三、提取开奖信息

把html源文件提取到TextBox后,需要对TextBox中的字符串进行分析,提取相应的开奖信息,这一步相对来说比较简单了。打开任意一期七星彩开奖页面,查看html源代码得知,开奖号码和其他一些信息都以文本字符方式存在于网页中,例如七星彩2007年第90期的开奖数据在网页源码中为

开奖日期: 2007-09-11  

开奖号码: 7  9  2  1  1  0  3</td>

特等奖</td><td>1(注) </td>

我们需要提取上面三部分内容,然后进行字符串组合(开奖日期+开奖期数+号码+特等奖)后在查询结果文本框中显示,如图1所示:

37-f14-2.jpg
图1

如何从字符串中提取关键字符呢?代码如下:

YuanMa.Text = tmp '在文本框内显示源码字符串

Startme = 1 '设置查找位置,初始为第1位

Where2 = InStr(Startme, YuanMa.Text, "开奖日期: ") '从源码的第一个字符开始查找字符串“开奖日期: ”

If Where2 Then '如果有此关键字

YuanMa.SelStart = Where2 - 1 '在源码文本框中的位置

YuanMa.SelLength = Len("开奖日期: ") '在源码文本框中的长度

TxtTmp = Mid(YuanMa.Text, Where2 + Len(KjdateTxt.Text), 20) '截取相关字符,其中的20是根据所需截取的字符串长度

Where1 = InStr(TxtTmp, " ") '把截取出来的字符串进行处理,删除多余的" "

TxtTmp = Left(TxtTmp, Where1 - 1) ' 把开奖日期提取出来了

Yihang = TxtTmp & ";" '在TextBox中显示开奖日期

End If

Startme = YuanMa.SelLength + YuanMa.SelStart + 1'查找位置移动到“开奖日期这里”

经过这样处理后,开奖日期就从html源文件中提取并显示出来了,按照同样的原理,开奖号码的处理也大同小异,有兴趣的读者可以自行研究。

四、试用程序

首先在VB6.0中创建一个标准EXE,并添加相关的控件,然后输入代码即可。所有代码均可以到电脑报网站http://www.cpcw.com/bzsoft/下载。

打开程序,输入七星彩2007年第1期到第91期进行查询,不到30秒便可以完成(图2),点击“保存”按钮,就将查询结果以文本文件格式成功保存到C:\qxc.txt。

37-f14-3.jpg
图2

五、总结

本程序的核心为两点:1.如何获取网页的URL;2.如何下载网页的源文件。起到关键作用的是API函数URLDownloadToFile,这个函数就可以把html源文件下载下来,保存到一个临时文件中,我们通过读取这个临时文件的内容就能对html的源文件进行分析和处理了。利用这种思路,我们不但可以查询彩票,还能查询考试成绩,列车发出时间等。