バックエンド

【PHP】ホームページに天気予報を表示させる方法【Webスクレイピング】【初心者向け】

とある方
これから冬になると、雪が降ることが多いから、ホームページに天気予報をのせておいたほうがいいと思うんです。

先日とある方よりいただいたご要望。

確かに冬になれば、地域によっては雪が降り積もりますし、梅雨になれば、雨ザーザーになっちゃいますし。

アオキ
ホームページに天気予報を表示させたいという方は意外に多いのかもしれないなぁ

と思い、

さくっとつくってみましたのでその時の方法をまとめてみることにしました。

Sponsored link

ホームページに天気予報を表示させる方法

天気予報といえば、Yahoo天気やウェザーニュースなどが有名と思いますが、

毎日毎日そういったサイトに行って、

天気予報をチェックして、
自分のホームページに掲載するというのは、

できないことはないけれどさすがにしんどく、手間暇かかってしまいます。

そんな時に便利なのがプログラミング

天気予報のサイトからその日のデータをひっぱってきて、
自分のホームページに掲載させるということが簡単にできてしまいます。

もちろん毎日データを書き換えるといった手間も不要。

一度プログラミングをつくっておけば、
何かしらトラブルがなければ、
四六時中いっときも休まずに、勝手に情報を更新してくれます。

アオキ
プログラミングってめっさ便利ですね・・

ということで、天気予報の情報をとってくるプログラミングの方法を、今回は『PHP』で解説してみます。

Sponsored link

ホームページに天気予報を表示させる方法は2通り

ホームページに天気予報を表示させる方法は大きく2通りあります。

  1. APIを使用する
  2. Webスクレイピング(ホームページに表示されているデータの抽出

まず1の『API』というのは、

アプリケーションプログラミングインターフェースの略で、

今回の場合は天気予報のサイトが、外部サイトにもデータを提供できるようにしている仕組みのことです。

有名な天気予報関連のAPIとして、

  • OpenWeatherMap
  • WeatherUnderGround
  • Forecast
  • LiveDoor天気予報

などがあります。

参考記事

API利用の注意点として、

  • 商用で使う場合は有料だったり
  • 1日の無料アクセス回数が決まっていたり

します。

LiveDoor天気予報がいいかなと思ったのですが商用有料ということで断念。

OpenWeatherMapを検討したのですが、

表示させたい地域の天気予報がなかったこともあり、

今回はAPIを使うことは断念し、

2番目のWebスクレイピングでデータを抽出することにしました。

ホームページに天気予報を表示させるために「Webスクレイピング」

Webスクレイピングはホームページからデータを抜き取る方法。

どのホームページを使えばいいのかなと思いググってみると、

どうやら気象庁のWebデータは、2次利用OKということを発見。

アオキ
こりゃ決まりだね。

天気予報を表示させたい地域もあったので即決。

要望いただいたホームページはレンタルサーバーだったので、プログラム言語は迷わず『PHP』を選択。

※個人的にはWebスクレピングといえばPythonだと思ってますが、
いかんせんレンタルサーバーで動かすには向いていないので、
格安レンタルサーバーなら素直に『PHP』でいいと思います。

ググって、『phpquery』なるライブラリ(便利ツール)があることを発見。

ほとんどこの記事の通りに実施して天気予報の情報を収集することができました。

参考記事

phpqueryサイトからphpファイルをダウンロードして、

任意の場所において、『PHP』のinclude_once() 関数でファイルを読み込んで、

file_get_contents()関数で天気予報が掲載されているページのURLを読み込んで、

あとはphpQueryの使い方にあわせて、こんな感じでデータを出力すればOKです。

深い階層にあるデータは、

グーグルクロムのデベロッパーツール「右クリックで検証、もしくはF12キー」

で確認しながら調整していくとOKです。

今回の場合はこういったコードになりました。

最後の ->text() を省くと、HTMLが出力されるようです。

アオキ
天気予報と言ったらやっぱり晴れ・曇・雨のマークがいるっしょ

っと思い、画像も持ってくることにしました。

最後に ->text() が書かれていないので、HTMLのまま出力されるのですが、

画像は相対パスだったためそのままでは持ってこれず・・

よくよく画像ファイルのURLを見ると、

https://www.jma.go.jp/jp/yoho/img/201.png

といったURLだったので、最後の番号を101とか 203 とか推測しながら画像収集しました。
(まるっと取得できる方法もあったはずなので探しておきます。)

また、降水確率の箇所が 00-06時、06-12、12-18、 18-24、と記載があり、一行でつなげると流石に見づらかったので、

explode() 関数で、”%”の箇所で区切りつつ、%をつけつつ、
タグで改行させています。

今回の天気予報データの取得はこんなコードになりました。

見た目はこんな感じ。

※CSSははしょってます。

もっと効率いい書き方があるとは思うけれど、

短時間でさくっとつくれるのは『PHP』の魅力かなと思います。

これで、ホームページを更新するたび、またはホームページにアクセスするたびに、

最新の情報を気象庁ページから自動で取得してくれるので、

毎回毎回天気予報のページを見に行く必要もなく、

とっても簡単に天気予報を表示させることができるようになりました。

Sponsored link

まとめ ホームページに天気予報を表示させるなら『プログラミング』を

Webスクレイピングの使い方を覚えれば、

天気予報に限らず、

  • 株価
  • ホテルの料金
  • Amazonの価格

など様々な情報を引っ張ってくることができるようになります。

APIが公開されていればAPIを使うことが最善なのですが、

欲しいAPIがない場合には、『Webスクレイピング』を使ってデータ抽出するのも手の一つかなと思います。

アオキ
どんどん楽して楽しいことに時間を使いたいですね。

今回のコードはこちらに上げておきます。

『PHP(Laravel)』ではこんな記事も読まれています。

1. 【Laravel(PHP)】初心者向け アプリのつくり方 をリリースしました【techpit】

2. 【PHP】【Laravel】CSVエクスポートの方法〜5つのポイント〜

3. 【PHP】オブジェクトと連想配列の違いについて調べてみた【初心者向け】

4. 【PHP】CSVインポートの方法〜大量データもバルクインサートでバッチリ!〜【laravel】

5. 【PHP】【図解】クラスと抽象クラスとインターフェースとトレイトとDIをまとめてみた【初心者向け】

6. 【PHP】配列や連想配列が覚えづらかったので学校に例えてみた【初心者向け】

7. 【PHP】ホームページに天気予報を表示させる方法【Webスクレイピング】【初心者向け】

8. 【Laravel】Webアプリ環境構築の仕方【Vue.js】【初心者向け】

9. 【PHP】2次元(多次元)配列でデータ取得したいならarray_columnがめっさ便利

アオキ
ツイッターでも記事ネタ含めちょろちょろ書いていくので、よろしければぜひフォローお願いしますm(_ _ )m

アオキのツイッターアカウント


関連記事一覧 (一部広告あり)

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


最近の記事

  1. バックエンド

    【厳選8冊】ホームページを作れるようになるためのおすすめ本【初心者向け】
  2. CG関連

    【P5.js】遊ぶようにプログラムできるクリエイティブコーディング〜はじめのいっ…
  3. バックエンド

    【Laravel(PHP)】でできる事をわかりやすく(ざっくりと)まとめてみた【…
  4. バックエンド

    【Python】手軽に試す方法2つとwebフレームワークについて【初心者向け】
  5. 数学

    【微分】とは わかりやすくまとめてみた〜めっちゃすごいわり算【初心者向け】
PAGE TOP