見出し画像

e-stat(政府統計の総合窓口)でAPIを使用したら、ウルトラわからんかった話。

週の半ばで、だいぶお疲れちゃんな、どうも私です。
眠い目こすって頑張って執筆中の私です。
本日は、4連続で投稿したWEBスクレイピングに対して、
APIを使って、HPから情報取得をおさらいしてみました。

使用HPは「政府統計総合窓口 e-stat」

統計情報がぎゅんぎゅんに詰まっています。情報自体も無料で使えますが、
もうね、ウルトラ説明がわからんサイトでした。マジでくそ。
っというか、説明する気がない。むしろ、使い方に対して、
このHPの説明より、QITTAの方が1億万倍わかりやすかった。
だって、なんも書いてないんだもん。むしろスタンスとして、
知ってて当然。説明なんかいらんだろくらいな感じでした。もうね、e-statの説明は忘れました。

1.まずはユーザー登録から
https://www.e-stat.go.jp/api/ここです。
ここで登録するのです。
ユーザー登録しないと。さすがにだめだよね。

ユーザー登録画面

2.さて、ここでいきなり躓きました。
ログインはできましたが、ここから、さっそく突き放されます。
APIの使い方も、何もなくいきなりここです。初心者への説明文もなんもありません。

ログイン後の画面

利用ガイドを読んでみましょう。
うん、1まではできた。でも2のアプリケーションIDをいきなり取得とあります。なんやねんそれ。ふむふむ、API機能(アプリケーションID発行)をすればいいのね。

糞ガイド

3.探せど、API機能(アプリケーションID発行)などない。

ガイド曰く:API機能(アプリケーションID発行)からアプリケーションIDを取得しろとありますが、どこにもありません。

import angry
print('ID発行しろというなら、ガイドにリンク貼っとけ馬鹿野郎。')

っで、ID発行場所がわからず、匙なげようとした結果。


4.こんなところにありました。ID発行

ID発行場所とっかかり

マイページ→API機能(アプリケーションID発行)

こんなところにあった。API機能
import angry
print('まじでわかんねーよ。最初にリンクはっとけボケ。人に教える気ねぇーだろ。やめちまえ。')

早速コードです、正直超短いですが、 ここにたどりつくために、2時間、ネットサーフィンしまくりました。

やっとの思いで、みつけたアプリケーションIDですが、URLです。
URLってなんやねんここで、思考停止(熟考に入ります。)

アプリケーションID
import angry 
print('URLってなんのURLやねん。')
print('ここなんか登録いんの??') 

よくよく思い出すと、

print('ああ・・・ここにあった。説明文。')
print('というか、本気で説明する気ないよね?まじでなんなん?
     説明文くっつけとけ、ヘルプの一つ用意しとけや。') 

3.そんでもって、たまたま見つけた。使い方集

ここにあったけどさ。なんかやっぱりわかんない。
https://api.e-stat.go.jp/swagger-ui/e-statapi3.0.html

もう、まじでよくわかんない。

4.最終的に、qittaに記載があったので、そこ参照にしました。

なんか、もう眠くなってきた。意味わからん。相変わらず。
平たく言うと、アプリケーションIDだけでは、たらなくて、
statusDataIDなるものが必要のようです。
これは、各統計情報の[api]から手に入れることができるようです。
偶々みつけたもので、なんとか、動作確認できましたが、
いまだに、任意のものを探しにいくのが大変。
その時のコードです。めっちゃ短い。しかもほとんど使ってない!



import requests
from bs4 import BeautifulSoup
from urllib.request import urlopen
import pandas as pd
import csv
import os
import openpyxl
import glob
from PIL import Image, ImageFilter
from urllib.parse import urljoin
from natsort import natsorted
url = 'http://api.e-stat.go.jp/rest/3.0/app/getStatsData?appId=ここappid。’&lang=J&statsDataId=0003191320&metaGetFlg=Y&cntGetFlg=N&explanationGetFlg=Y&annotationGetFlg=Y&sectionHeaderFlg=1&replaceSpChars=0'
html = requests.get(url)
soup = BeautifulSoup(html.text, 'lxml')


この記事が気に入ったらサポートをしてみませんか?