【Python】ALISのAPIを読み込むプログラムの説明


リンク:

アリスブログ「ALISのAPI」を使用する方法まとめ > 当記事


◆ 【Python】ALISのAPIを読み込むプログラムの説明

いよいよ、やってきました。

「ALISのAPIを読み込むプログラム」の本体の説明です


私の「Pythonの記事」を読んできた方なら、きっと、この記事の内容も理解することができるでしょう!


○ 留意事項

・「2018/09/08」に作成された記事です

・pythonの経験は浅いので、内容の一部に誤りがあるかもしれません


○ 関連記事




◆ 「ALIS」の新着記事を「1件」表示するプログラムのソースコード

○ 基本型

import urllib.request
import json
import pprint


url_name1 = 'https://alis.to/api/articles/recent?limit=1'

cm_data1 = urllib.request.urlopen(url_name1)

byte_data1 = cm_data1.read()

str1 = byte_data1.decode("utf-8")

article_box1 = json.loads(str1)

pprint.pprint(article_box1['Items'])


input('Enterキーで終了')


○ 省略型

import urllib.request
import json
import pprint

cm_data1 = urllib.request.urlopen('https://alis.to/api/articles/recent?limit=1')
article_box1 = json.loads(cm_data1.read().decode("utf-8"))
pprint.pprint(article_box1['Items'])

input('Enterキーで終了')


省略型の方は、前から同じソースコードを掲示していたので、見覚えがあると思います。


一方、基本型は初めて作成したので、少し戸惑うかもしれません。

しかしながら、コードの中身は、過去の記事の「『ALIS Media』の『HTMLデータ』を取得してみよう!」と「JSONデータのロードと表示を行ってみよう!」の組み合わせでしかないので、さほど困ることはないでしょう。


○ 基本型の説明(「省略型のソースコード」の説明は省きます)

import urllib.request
import json
import pprint

ALISのAPIの読み込みでは、「urllib.request」「json」「pprint(おまけ)」のモジュールが必要となるため、呼び出しを行います。


url_name1 = 'https://alis.to/api/articles/recent?limit=1'

url_name1に、ロードするURLの情報を入れておきます。


なお、「ALISのAPI」を呼び出したい時は、



・ALISのAPIのドキュメント



の内部に書かれている「任意のURL」を使用することで、目的のJSONデータを獲得することができます。


cm_data1 = urllib.request.urlopen(url_name1)
byte_data1 = cm_data1.read()

指定のURLから、bytes型のJSONデータを受け取り、それを「byte_data1」の中に入れます。

(以前の記事では、「HTMLデータ」を「bytes型」で受け取っていましたが、「ALISのAPI」のURLの場合は、read()で呼び出すと「JSONデータ」を送ってくるので、今回の「byte_data1」には、「JSONデータ」が含まれることになります)


str1 = byte_data1.decode("utf-8")

「bytes型」を「str型」に変換します。


……だけど、今回のケースでは、送られてくるデータの形式上、変換の必要性が特になく

上記の行を消した上で、下記のコードを「json.loads(str1) → json.loads(byte_data1)」に変換しても動きます

けれども、「.decode("utf-8")」が含まれたコードを使用した際に、「今後、文字のエンコード関係でどこかに影響があるのかな?」と思うことがあったので、そのまま残しています。


・備考:「str1」の中の日本語が閲覧できない件について

HTMLを表示するプログラムの時は、デコードした後に「文字列の中身」を全て確認することができていましたが、今回の「str1」を「print」などで表示すると、日本語の部分だけ表示がおかしくなります


これは、「Unicodeエスケープ」が要因です。

「ALISのAPI」から送られてくる「JSONデータ」は、「Unicodeエスケープ形式」なので、辞書型に変換するまでは(json.loads()するまでは)、「unicode(日本語が『\u+16進数』の状態)」で表示されます。


・補足:「Unicodeエスケープ形式」の文章を日本語で見たい場合

Unicodeエスケープされていない文字列」に戻せばいいだけですね。

import codecs
str2 = codecs.decode(str1, 'unicode-escape')
print(str2)

この文章を「str1 = byte_data1.decode("utf-8")」の後に配置することで、str1の中身を正確に把握することができます



article_box1 = json.loads(str1)

獲得したJSONデータを辞書型に変換します。


pprint.pprint(article_box1['Items'])

辞書型の変数を見やすい形式で表示します。


input('Enterキーで終了')

いつもの一時停止させるプログラムです。


○ 出力結果

成功すると、「ALISの新着記事」を1つ取得して表示することができます


ここまで理解した上で、APIの獲得を成功させたら、少し感動するかもしれません

(*´∀`*)



「『ALISのAPI』を使用する方法まとめ」に戻る




◆ 「ゆうき」のツイッター


公開日:2018/09/08
獲得ALIS:16.40
ゆうき / アリスブロガー's icon'
  • ゆうき / アリスブロガー
  • @yuuki
ALISブロガーです。スキル:SEO対策、ライティング、プログラム等。ALISでは「記事制作のアドバイス」や「情報提供」などを行っています。よろしくお願いします。Twitter yuuki_tw1
コメントする
コメントする