您的位置:首页 > 编程语言 > VB

VB实现天气查询

2007-09-18 11:46 239 查看
领导出差了,总是很担心那边的天气情况,于是想在以前写的软件里面加入天气预报功能,多少方便些。
其实方法很是简单,就是从网页上抓取有用信息即可。只不过要在vb中先填入"Microsoft Internet Controls"这个部件,因为要使用到其中的WebBrowser。添加方法很简单,添加后如下图:



准备工作已经就绪,正式工作开始:
新建一个form表,在其上添加一个WebBrowser,一个按钮,一个Label。WebBrowser就是我们的网页承载器了。下面给出示例:
Private Sub Command1_Click()
Call WebBrowser1.Navigate("http://php.weather.sina.com.cn/search.php?city=北京")
Label11.Caption = "请 稍 后 …"
End Sub
下载下来的网页部分内容如下:



源文件部分如下:


既然知道文件的具体内容了,也就好搜索所需信息了,下面就是重点:
Private Sub WebBrowser1_DownloadComplete()
On Error Resume Next
weatherpage = WebBrowser1.Document.documentElement.innerHTML
Dim nhEndIndex As Long
Dim nhBeginIndex As Long
Dim htemperature As String
Dim ltemperature As String

Dim nlEndIndex As Long
Dim nlBeginIndex As Long

nhEndIndex = InStr(70, weatherpage, "℃")
If nhEndIndex > 0 Then
nhBeginIndex=InStrRev(weatherpage,">",nhEndIndex)+1
Label1=counterweather
htemperature=Mid(weatherpage,nhBeginIndex,nhEndIndex-nhBeginIndex+1)

nlEndIndex=InStr(nhEndIndex+1, weatherpage, "℃")
nlBeginIndex=InStrRev(weatherpage,"~",nlEndIndex)+1
ltemperature=(Mid(weatherpage,nlBeginIndex,nlEndIndex-nlBeginIndex+1))

Label1="北京今天:"&htemperature &"~" End If
End Sub
简单讲解一下就是:找到第一个℃,从℃往前到>为止的内容是最高温度部分,再往下找下一个℃,从这个℃往前到~,是最低温度部分。分别进行赋值给htemperature 和 ltemperature 然后通过label1显示即可。
注意:这段程序是和网页的内容相关的,如果你选择的气象网站的内容不是这样排列的,大家就要稍微修改一下代码了,但万变不离其宗。

当然,上面只是简单介绍了这种方法,还很不完善。比如:网页可能刷新很慢,或者出错怎么办?呵呵,当然方法很多也不难,还是大家自己想想吧,我就不多言了!
而且再次说下,这个方法不只适用于天气预报,只要是获取网页信息的,都适用。比如:股票信息,招聘信息,价格etc.

还是保留节目,show下我自己的软件:(自己也认为很弱)


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: