Pythonでrequestsを使ってWEB APIのデータを取得する

Python3でWEB APIからデータを取得する方法について。

requestsライブラリを使って、ivedoorが提供するWeather Hacksから実際に天気予報データを取得してみる。


使用するサービスとライブラリ

はじめに、今回使用するWeather Hacksというサービスとrequestsというライブラリについて触れておく。

Weather Hacks

http://weather.livedoor.com/weather_hacks/

Weather Hacksというのは、LINE(株)のポータルサイトlivedoorが提供するお天気情報サイト。天気予報のAPIやRSS、ブログ向けのお天気プラグインなどを無料で利用することができる。

今回は、このWeather Hacksが提供する「お天気Webサービス」を利用する。Weather HacksからJSON形式でお天気データを取得することができる。

お天気Webサービスの仕様は、こちら

requestsライブラリ

http://docs.python-requests.org/en/master/

requestsは、HTTP for Humansというコンセプトで、Pythonを使ってWebデータを簡単に使える機能を提供しているライブラリ。

requestsがインストールされていない場合は、pipでrequestsをインストールする。


#インストール
$pip install requests



データの取得

それでは早速Weather Hacksからデータを取得してみることにする。

Weather Hacksからデータを取得するベースURLは以下の通り。
http://weather.livedoor.com/forecast/webservice/json/v1
このURLに続けて、欲しいデータのパラーメタを渡すことで色々な情報を取得することができる。

とりあえず、ベースURLに続けて ?city=130010 を記述し、東京の天気を取得してみる。
(取得したい地域のIDを調べるのはココ

import requests

url = 'http://weather.livedoor.com/forecast/webservice/json/v1?city=130010'
api_data = requests.get(url).json()
print(api_data)


上記のコードを実行すると、Pythonの辞書型のデータが取得できる。

取得できるが、、、

辞書型の長いデータが一行で表示されるので、とても見にくい。

そこでPythonの標準ライブラリのpprintモジュールを使う。
pprintを使うと改行が行われ、取得したデータが見やすくなる。


import pprint
import requests

url = 'http://weather.livedoor.com/forecast/webservice/json/v1?city=130010'
api_data = requests.get(url).json()
pprint.pprint(api_data)

これで見やすい形でデータを取得することができるようになった。

取得したデータを整える

ここまでの作業でもWeather Hacksから東京の天気情報データを取得できるようになったが、取得できる情報が多く、必要のないデータも含まれている。

そこで必要なデータだけを表示するようにコードを変更する。

取得したデータは辞書型なので、辞書型を操作することでデータを整形することができる。

まずはAPIのタイトルを取得する。

そして、Weathe Hacksでは当日と翌日、明後日の天気予報を取得できるので、当日から明後日までの3日間の天気予報を取得することにする。


import requests

url = 'http://weather.livedoor.com/forecast/webservice/json/v1?city=130010'
api_data = requests.get(url).json()
print(api_data['title'])
for weather in api_data['forecasts']:
      weather_date = weather['dateLabel']
      weather_forecasts = weather['telop']
      print(weather_date + ':' + weather_forecasts)



このコードを実行すると、今日、明日、明後日の天気を取得することができる。

#実行結果
東京都 東京 の天気
今日:晴れ
明日:晴れ
明後日:晴時々曇


このように、たった数行のコードで天気予報データを取得することができた。



Web APIには無料で使えるのに、便利なものや楽しいものがたくさんあるので、色々試していきたい。

今回はここまで。

最後まで読んでいただきありがとうございました。

0 件のコメント :