Dragonbaord 410c Python交互設計(2)——天氣預報demo數據獲取

         現在很多網站都可以提供天氣數據服務,只要你的設備連接網絡,就可以方便的通過網絡請求訪問到天氣數據,在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(QtWidgets.QWidget): 
    

       def __init__(self):  

            super(weatherWindows,self).__init__()  

            self.img=QtGui.QImage()

            self.manager = QtNetwork.QNetworkAccessManager()

           self.weather_updateOK=0

            self.Reply=self.manager.get(QtNetwork.QNetworkRequest(QtCore.QUrl("http://wthrcdn.etouch.cn/WeatherApi?city=%E6%B7%B1%E5%9C%B3")))

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

        def replayFinished(self):
           global weather
           print("weather replayFinished")
           #status_code = self.Reply.attribute(QtNetwork.QNetworkRequest.HttpStatusCodeAttribute)
           qbyte = self.Reply.readAll()
           pbyte = bytes(qbyte.data())
           str(pbyte, encoding = "utf-8") 
           weatherInfo = bytes.decode(pbyte)
           print(weatherInfo)

          self.weather_updateOK=0

if __name__=="__main__":  
    import sys  
   app=QtWidgets.QApplication(sys.argv)
    myshow=weatherWindows()  
    sys.exit(app.exec_())

       以上就是整個獲取天氣數據和打印天氣數據的代碼,運行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文件數據,讀取數據內容。



            

         

       

         

        

    

         


         

發佈了66 篇原創文章 · 獲贊 11 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章