ホームページをリニューアルしました。旧HPはこちら
ソフト・ハードウェア Python PHP

週間天気予報サイトのWebスクレイピング

今年は4月初旬が初夏のように暑いと思っていたら、下旬~5月初旬は3月並みの寒さとなり、さらに今週から来週にかけては前線が停滞して梅雨のはしりのような天気で、気圧配置が目まぐるしく変わる。そのため週間天気予報はなかなか当たらない。気象庁以外、日本気象協会やウェザーニュースなど気象予報業務の会社がウェブサイトで天気予報を発表しているが、各社の予報内容は少しずつ異なっていて、前日になって翌日の予報を変えることもある。それでも各社の予報が一致している場合は、概ねその予報は外れることはなく、その傾向は週間天気予報にも現れている。

農作業やアウトドア活動の計画を立てるには週間天気予報が重要だが、予報サイトをネットサーフィンするのは疲れるので、いくつかの予報サイトから予報データをスクレイプして一瞥するプログラムを作成し、ホームページに掲載することにした。

プログラム構成
・Yahoo、日本気象協会、気象庁、ウェザーニュース、ウェザーマップなど、4~5社の週間天気を比較したいが、お天気アイコンのみ表示するサイトもあり、会社によってそのアイコンの表示内容が異なるため、「晴れ時々曇り」といったコメントが入っている「Yahoo、日本気象協会、気象庁サイト」からデータを取得することにした。
・Yahoo、日本気象協会のウェブサイトは静的なHTMLで記述されており、PythonのBeautifulSoupモジュールで容易にデータを取得することができるが、気象庁はJavascriptによる動的なHTMLサイトのため、WebBrowserのDriverをインポートして、Pythonのselenimuモジュールでデータを取得した。
・さくらインターネットのレンタルサーバーにはWebBrowserのDriverをインストールできないので(できるのかもしれないが方法がわからなかったので)、ホームページにはYahooと日本気象協会の週間天気予報を掲載することにした。

1、Windowsパソコン用プログラム:weather-dataframe-openpyxl.py

  1. Yahoo、日本気象協会のウェブサイトからPythonのBeautifulSoupモジュールでデータ取得。
    Yahooの日付表示は、土日と平日で仕様が異なるため、日付と天候に関する要素を連結し、 “)”をセパレータにして再リスト化
  2. 気象庁のデータは朝、夜で表示範囲が異なるので、天気予報の文字列を’長野県’で区切り、さらにその区切った文字列を’降水確率’で区切ることで、日付と天気を抽出する
  3. 3つのサイトの抽出結果をDataFrameでまとめて、openpyxlモジュールを使ってエクセルファイルにエクスポート。

2、さくらインターネット用プログラム

  1.  weather-forecast-sakura.py
    –> ~/work2/bme280job/に保存
    ・Yahoo、日本気象協会のウェブサイトからデータ取得
    ・DataFrameでまとめて、”weather_yahoo_tenkijp.cvs”ファイルにエクスポート
  2. weather-forecast-yahoo-tenkijp-col2.php
    –> well/wp-content/themes/cocoon-child-masterに保存
    ・Iで作成された”weather_yahoo_tenkijp.cvs”を読み込み、テーブル表示
    ・home-atmo.comのホームページに上記のPHPスクリプトを挿入し、週間天気を表示

以下のようなテーブルをホームページに表示できるようにした。
もっと見栄えを良くしてもよいが、style,cssを記述するのは面倒なので、いったんこれで良しとした。

コメント

タイトルとURLをコピーしました