北東北 LabVIEWユーザー会

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

Web Scraping - 10日間天気予報のログを取る

解決済み
解決策を見る

LabVIEW CommunityのMac版が動くようになったので、何かプログラムを作ろうかと考えましたが、Mac版の方が機能が少ないので特に目新しいことも思いつきませんでした。私にとってはふだん使いの古くなったMacBook ProでLabVIEWが動くだけで十分素晴らしいことです。

 

、、とはいえ、何か書いてみようと、昔から気になっていた10日間天気予報のログを取ってみることにしました。流行りのPython Web Scrapingも興味はありますが、LabVIEW Web Scrapingも手軽で良いのではないかと思います。

 

 

web.png

 

山歩きをする前にtenki.jpの10日間天気予報を見るのですが、来週の予報はあまり当たらないような気がします。予報自体が更新されていくのでどのぐらい外れているのか/当たっているのかよくわからないのです。1日を4つの時間帯に分けて0時から6時、6時から12時、12時から18時、18時から24時で予報された天気が表示されます。当日の予報は、まだ過ぎていない時間帯だけが表示されます。

 

2時間おきに発表される予報は50分ぐらい後になりますが、自動的に書き換えられます。
10日後の予報はその日が当日になるまでに120回ぐらい更新されることになります。その日の更新履歴をみればどのぐらい当てにして良いかよくわかるということになるのではないでしょうか。

4つの時間帯データがあるものだけを以下のようにCSV形式のファイルに記録します。

発表日時,予報日1,予報天気1,予報天気2,予報天気3,予報天気4,(改行)
発表日時,予報日2,予報天気1,予報天気2,予報天気3,予報天気4,(改行)
発表日時,予報日3,予報天気1,予報天気2,予報天気3,予報天気4,(改行)
:
:
発表日時,予報日10,予報天気1,予報天気2,予報天気3,予報天気4,(改行)

新しい発表データは追記していきます。数日後に記録が集まった時点で表計算ソフトで開き予報日でソートすれば、その日の予報履歴を簡単に見ることができます。

 

0623.png

 

プログラムは概ねこんな感じで、HTMLファイルから必要な部分を切り出してCSVで追記していきます。

 

mainDiagram.png

 

1時間おきぐらいでこのVIを実行して、更新されている場合はファイルに追記することにします。

ただし、Macの場合はスリープしているとWiFiもOFFになるためエラーとなります。とりあえず、画面は一定時間で消えるけれどスリープしない設定ではうまく動きます。

 

このプログラムをWindows10に持っていくと、制御器・表示器の名前が文字化けです。しょうがないのでアルファベットに変更しました。HTMLファイルからの文字列も文字化けするので、UTF-8からSift_JISへの変換関数を間に入れました。

 

ということで共通化は諦めて、Mac用の「WeatherForecast_M.zip」とWindows用の「WeatherForecast_W.zip」を添付します。

 

URLのデフォルトは盛岡市になっていますが、tenki.jpで好きな市町村の10日間天気を開いて、そのURLをコピー&ペーストしてください。

 

Web Scrapingは相手の負荷にならないように節度を持って行ってください。

 

なお、気象庁の8日間天気はURLが以下のような形式になっていて、LabVIEWの関数ではうまく指定できませんでした。

https://www.jma.go.jp/bosai/forecast/#area_type=class20s&area_code=0320100

 

以上です。

すべてをダウンロード
メッセージ1/5
2,036件の閲覧回数

私はWindowsしか持ってないので_Wをダウンロードしました。

UTF-8の変換関数なんてベテランしか知らないやつですねえ(^-^;)

 

0 件の賞賛
メッセージ2/5
1,937件の閲覧回数

コメントありがとうございます。

 

ほとんど忘れていましたが、検索でalucky4416さんの記事 を見て文字だけのそっけないアイコンを思い出しました。

最近はNI Unicode Toolsが勧められているようですね。Mac版のVI Package Managerには出てこないですが、、。

0 件の賞賛
メッセージ3/5
1,928件の閲覧回数

古いLabVIEWのSMTP関数の中に使われていたのを今のLabVIEWにコピーしても動く、ってやつだったのに、VIPMでD/Lできるようになってたんですね。

Mac用が無いのはWindowsのAPIを使ってるのかな?そもそもMac用LabVIEWにはあまり必要ないかも。

 

教えてもらったページからたどっていったら、NI Communityに他の隠し関数のフォーラムができているし。

で、それを集めた関数パレットがVIPMでD/Lできました(UTF-8のは含まれてない)。

 

0 件の賞賛
メッセージ4/5
1,923件の閲覧回数
解決策
トピック作成者おおはしが受理

10日間ログを取り続けて、6月24日の天気の予報履歴が120個集まりました。この間に東北地方も梅雨に入ったため天気は随分変わりました。

 

ログを表計算ソフトで開くと記録された順番で表示されます。

 

forcastData0624.png

 

6月24日の予報履歴を見るためにC列、A列、B列でソートします。

forcastData0624_Sorted.png

 

6月24日の予報履歴が120個並んでいます。

このデータを上からスクロールさせて見ていけば良いのですが、文字よりもtenki.jpの天気マークで表示させた方がよくわかります。

 

天気の予報履歴の表示プログラムで簡単に開けるように、6月24日の予報履歴だけをコピーして、新しいCSVファイルを作ります。

0624Data.png

 

このファイルを開いて履歴を表示させたものが次の図です。

ForecastHistoryPanel.png

 

tenki.jpのお天気マークをPict&Text リングで表示させています。

ブロックダイアグラムは次の図です。

 

ForecastHistoryDiagram.png

 

天気マークへの置き換えが終わった後で、500msec間隔で自動的にスクロールさせています。

 

Windows版では確認していませんので、添付したファイルは文字化けでダメかもしれませんがプログラムの考え方は同様だと思います。

 

6月24日現在の盛岡の天気ですが、朝から曇りで、お昼ぐらいに少し雨が降り、夕方には日差しが少し出ています。

10日間天気予報は、一喜一憂する程度で見ているのが良いかもしれません。

すべてをダウンロード
メッセージ5/5
1,901件の閲覧回数