基于Dragonbaord 410c开发板的Python交互设计(2)——如何获取天气数据

分享到:
12283
下一篇 >

现在很多网站都可以提供天气数据服务,只要你的设备连接网络,就可以方便的通过网络请求访问到天气数据,在dragonboard 410c开发板上已经提供了wifi连接服务,可以方便的连接到网络,因此,在dragonboard 410c上进行开发的过程中,我们可以通过网络方式来获取天气数据,丰富我们的应用,目前,常用的有国家气象局和新浪的天气API接口,具体网址如下:

国家气象局天气接口地址:

http://www.weather.com.cn/data/sk/101010100.html

http://www.weather.com.cn/data/cityinfo/101010100.html

http://m.weather.com.cn/data/101010100.html

新浪天气接口地址:

http://www.weather.com.cn/data/sk/101010100.html

http://wthrcdn.etouch.cn/WeatherApi?city=深圳

这些接口我们可以用浏览器打开,就可以看到获取的天气信息,如下图所示,这里我们打开的是*后一个新浪的接口,可以获取天气的XML文件,查询当前和前后几天的天气和环境指数。

但是我们在开发过程中肯定不能用浏览器来这样打开我们的天气接口了,更多的时候我们需要通过程序去自动的获取和解析天气数据,今天就教大家如何在dragonboard 410c平台下使用Python脚本来从新浪官方的API接口获取天气数据并且打印出来。

这里我们使用了pyqt提供的网络管理服务类QtNetwork模块中的QNetworkAccessManager和QNetworkRequest等类来实现网络编程,实现对天气API接口的访问获取相关的数据服务,具体的代码如下:

from PyQt5 import QtWidgets, QtCore, QtXml, QtGui,QtNetwork

class weatherWindows

self.manager = QtNetwork.QNetworkAccessManager

self.weather_updateOK=0

self.Reply=self.manager.get

self.Reply.finished.connect

def replayFinished

#status_code = self.Reply.attribute

qbyte = self.Reply.readAll

pbyte = bytes

str

weatherInfo = bytes.decode

self.weather_updateOK=0

if __name__=="__main__":

import sys

app=QtWidgets.QApplicaTIon

myshow=weatherWindows

以上就是整个获取天气数据和打印天气数据的代码,运行python脚本就可以获取天气数据并且打印出来,如下:

在上述代码中,其核心是通过

QtNetwork.QNetworkAccessManager()创建一个网络管理类。

然后利用该类获得的对象发送url请求self.manager.get(QtNetwork.QNetworkRequest(QtCore.QUrl(“http://wthrcdn.etouch.cn/WeatherApi?city=%E6%B7%B1%E5%9C%B3”)))

完成之后我们就只要将请求完成后的信号与一个槽函数关联起来就可以了,在完成请求获取数据后,系统就可以自动的调用槽函数来解析XML文件得到天气信息了,其中关联函数如下:

self.Reply.finished.connect(self.replayFinished)

replayFinished是槽函数,完成请求后就会调用该函数处理。

以上就是整个天气预报demo的数据获取过程,但是大家看到我们现在只是获取了数据,但是通常在我们的应用中我们不需要显示全部的数据,只需要解析部分数据出来,然后进行显示即可,这里就需要对我们获取的xml文件信息进行解析了,而不只是简单的打印出xml文件信息,后去blog中将进一步教大家如何来解析天气XML文件数据,读取数据内容。

你可能感兴趣: 技术文章 图片 DragonBoard 410c python 开发板 NB
无觅相关文章插件,快速提升流量