Python を勉強するにあたってまずは DMM Web サービスを叩きたい。
ニッポンのおもてなしデビューを果たしたという 「メロディー・雛・マークス」の情報を女優検索 API から検索して表示させるお決まりのやつ。 過去のメロディー・雛・マークスは以下。
- Vue.js でメロディー・雛・マークスを出す - ゆーすけべー日記
- Raku でメロディー・雛・マークスを出す - ゆーすけべー日記
- Node.js でメロディー・雛・マークスを出す - ゆーすけべー日記
- PHP で DMM Web サービスを叩いてメロディー・雛・マークスを出す - ゆーすけべー日記
今回は Python3、及びせっかくだからと Jupyter Notebook で表示してみたい。
まずは、環境変数に入れたAPI ID
とAFFILIATE ID
を取得する。
この 2 つの値は DMM API にリクエストする際に必須になる。
import os
api_id = os.environ.get('DMM_API_ID')
affiliate_id = os.environ.get('DMM_AFFILIATE_ID')
次にリクエスト URL を生成する。なお、HTTP クライアントは標準のurllib
を使うことにした。
import urllib.request
...
base_url = 'https://api.dmm.com/affiliate/v3/ActressSearch'
params = {
'api_id': api_id,
'affiliate_id': affiliate_id,
'keyword': '雛',
'hits': '50',
}
url = "{}?{}".format(base_url, urllib.parse.urlencode(params))
本来ならkeyword
の値をユーザー入力によって変更可能にしたいところだが、
暫定的に「雛」とする。
URL が完成したらクライアントから GET、
中身は JSON フォーマットで返却されるので、パースして辞書型にしてdata
変数に格納する。
import urllib.request
import json
...
req = urllib.request.Request(url)
with urllib.request.urlopen(req) as res:
body = res.read()
data = json.loads(body)
いよいよ、pandas
ライブラリを使って DataFrame に変換、Jupyter Notebook で描画する。
ただ、返却された JSON のデータ構造はそのまま使えないので、
女優リストを取得するためにdata
ディクショナリの中をたぐり、
生の JSON 文字列にしてからpandas
のread_json
メソッドで読み込ませる。
import json
import pandas as pd
...
df = pd.read_json(json.dumps(data['result']['actress']))
これで、よし。全ソースコードは以下の通り。
import os
import urllib.request
import json
import pandas as pd
api_id = os.environ.get('DMM_API_ID')
affiliate_id = os.environ.get('DMM_AFFILIATE_ID')
base_url = 'https://api.dmm.com/affiliate/v3/ActressSearch'
params = {
'api_id': api_id,
'affiliate_id': affiliate_id,
'keyword': '雛',
'hits': '50',
}
url = "{}?{}".format(base_url, urllib.parse.urlencode(params))
req = urllib.request.Request(url)
with urllib.request.urlopen(req) as res:
body = res.read()
data = json.loads(body)
df = pd.read_json(json.dumps(data['result']['actress']))
df.loc[:,['id','name','ruby']]
Jupyter Notebook で「Controll + Enter」を押していざ実行。
お、AV 女優一覧が表になってる。
下の方にスクロールすると…
でた!メロディー・雛・マークス!黒船襲来!