linux系统气象数据采集,抓取网页上的数据-这里以获取中央气象局气象数据为例...

现在网络越来越发达了,对组态软件要求也越来越多,我参考了网上的一些例子,但是获取的数据都不是很多,对于搞暖通楼控的工程师来说温度、湿度、和大气压力都很重要,若你要获得更多的气象数据网上提供的API是要收费的。我通过分析网站的数据,得到了更详细的数据,免费。这里我自己写了一个抓取天气信息的VBS脚本,有兴趣可以适当的改改弄到组态软件当中去,这个是网页抓取JSON格式的,这个可以作为参考如何从网页当中抓取数据。 不同的组态软件有不同的办法,这个VSB脚本提供给大家参考。 我这个抓取的原始数据信息相当较全面,由于VBS不是JAVA不能直接解析JSON,我这里用了正则表达式提取了几个数据作为弹窗。不同的组态软件都可以参考这个进行获取数据达到组态软件中。。。。本例子获得的气象数据为成都市双流区的。。你懂得我家在这里867a9cf89619d8594883544282a879b6.gif 改动参数就可以获得别的地方的气象数据。这个是中央气象台的后台实时数据。。

fdb160c617967a1b1e1a68d541bbe724.png

题外话:最近也比较忙,其实挺想网上看些资料写个关于不同经纬度不同日期时间的日照,太阳高度等西门子SCL的程序。。PLC就可以计算了对做楼控的兄弟就很有用了。。5c7ed421d99686ce16acc0a61ca771d6.gif有兴趣的支持我一下。

Dim html,http,strHtml,post_list,window,kuwo,tet,fso,f,t

Dim regEx, Match, Matches

DIM StrTEST

'Set html = CreateObject("htmlfile")

Set http = CreateObject("Msxml2.ServerXMLHTTP")

'html.designMode = "on" ' 开启编辑模式

http.open "GET", "http://www.nmc.cn//f/rest/real/56288", False

http.send

strHtml = trim(http.responseText)

'msgbox strHtml

'html.write strHtml ' 写入数据

'Set post_list = html.getElementById("post_list")

'For Each el In post_list.children     Ws cript.Echo el.getElementsByTagName("a")(0).innerText

'Next

'#################################################

'strHtml = http.responseText ' 得到数据

'Set window = html.parentWindow

'window.execs cript strHtml, "Js cript"     '定义一个JS变量,将JSON数据引入

'Set kuwo = window.returnCitySN ' 获取解析后的对象

'  MsgBox"温度 " & window & " 摄氏度"

'Set kuwo = kuwo.json ' 获取解析后的对象

'Ws cript.Echo "温度:", kuwo.temperature, " 湿度:", kuwo.humidity

'MsgBox window.Eval("json.temperature")

'#################################################

'

' MSGBOX sc.Eval("o.temperature")

set fso=createobject("s cripting.filesystemobject")

set f=fso.opentextfile("c:a.txt",2,true):f.write strHtml :f.close

set f=fso.opentextfile("c:a.txt",1)

strHtml = f.ReadAll

MsgBox strHtml

' 创建变量。

StrTEST="temperature"

Set regEx = New RegExp         ' 创建正则表达式。

regEx.Pattern = StrTEST          ' 设置模式。

regEx.IgnoreCase = True         ' 设置为不区分大小写。

regEx.Global = True         ' 设置全局适用。

Set Matches = regEx.Execute(strHtml)   ' 执行搜索。

For Each Match in Matches      ' 对 Matches 集合进行迭代。

RetStr = RetStr & Match.FirstIndex

Next

MSGBOX "温度为"&Mid(strHtml, LEFT(RetStr,3)+LEN(StrTEST)+3,Instr(1, Mid(strHtml, LEFT(RetStr,3)+LEN(StrTEST)+3,6),",", 1)-1)

StrTEST="humidity"

RetStr=""

regEx.Pattern = StrTEST          ' 设置模式。

regEx.IgnoreCase = True         ' 设置为不区分大小写。

regEx.Global = True         ' 设置全局适用。

Set Matches = regEx.Execute(strHtml)   ' 执行搜索。

For Each Match in Matches      ' 对 Matches 集合进行迭代。

'RetStr = RetStr & "Match found at position "

'RetStr = RetStr & Match.FirstIndex & ". Match Value is '"

'RetStr = RetStr & Match.Value & "'." & vbCRLF

RetStr = RetStr & Match.FirstIndex

'RetStr =  RetStr & Match.Value & ":" & vbCRLF

Next

'MSGBOX RetStr

MSGBOX "湿度为"&Mid(strHtml, LEFT(RetStr,3)+LEN(StrTEST)+3,Instr(1, Mid(strHtml, LEFT(RetStr,3)+LEN(StrTEST)+3,6),",", 1)-1)

StrTEST="airpressure"

RetStr=""

'Set regEx = New RegExp         ' 创建正则表达式。

regEx.Pattern = StrTEST          ' 设置模式。

regEx.IgnoreCase = True         ' 设置为不区分大小写。

regEx.Global = True         ' 设置全局适用。

Set Matches = regEx.Execute(strHtml)   ' 执行搜索。

For Each Match in Matches      ' 对 Matches 集合进行迭代。

RetStr = RetStr & Match.FirstIndex

Next

MSGBOX "大气压为"&Mid(strHtml, LEFT(RetStr,3)+LEN(StrTEST)+3,Instr(1, Mid(strHtml, LEFT(RetStr,3)+LEN(StrTEST)+3,6),",", 1)-1)

'set html=nothing

set http=nothing

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值