クリプト

【Python】ALISの記事を「3回連続で」読み込む方法

ゆうき's icon'
  • ゆうき
  • 2018/09/10 09:08
Content image


リンク:

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


◆ 【Python】ALISの記事を「3回連続で」読み込む方法

今回は勉強回


少量の記事を「ALISのサーバー」から「連続で」呼び出すメリットは、あまり無かったりするのですが、

この技術を覚えておくと、「ループ処理を行う時」や「多くの記事を読み込む時」に役立ったりするので、ここでは、「連続で読み込む方法」を説明しておきます。



○ 関連記事



◆ 連続で記事を読み込むプログラム

import urllib.request
import json
import pprint
import time


#任意の値
limit1 = 1

#固定の値
page1 = 1



for count1 in range(3):
    try:
        url_name1 = 'https://alis.to/api/articles/recent?limit=' + str(limit1) + '&page=' + str(page1)

        cm_data1 = urllib.request.urlopen(url_name1)

        article_box1 = json.loads(cm_data1.read().decode("utf-8"))


        page1 += 1
        print("Load : " + str(count1))

        pprint.pprint(article_box1["Items"])

        print("")

        #time.sleep(1)

    except:
        print("Error!")
        break


input('Enterキーで終了')

ALISのAPIを読み込むプログラムの説明」に使われていたソースコードの拡張型です。

(更新したところは、太字にしています)


○ 新しく追加されたコードの説明

import time

「time.sleep」というプログラムを使えるようにするモジュールです。

(ゲーム系のプログラムを作る時は、sleep系の関数をよく見かけるかも)


#任意の値
limit1 = 1

#固定の値
page1 = 1

変数の宣言です。

「ALISのAPI」の呼び出しの際に使う「limit」や「page」は、今までURLの文字列(str文)に値を直接入れていましたが、今回は、URLの文字列を途中で変更したいので、変数で変更できるようにしておきます。


for count1 in range(3):

ループ文です。

C言語で訳すと

for (int count1 = 0; count1 < 3; count1 += 1){

のようなもの。

ここでは、この中に含まれているコード(行頭に4個以上の半角スペースが入力されているコードの全て)を「3回連続で」実行します。


・Pythonにおける「インデント(行頭をずらす行為)」と「スコープ(有効範囲)」の関係について

今回の説明で、初めてインデントを行ったため、追加で説明。


「ループ文」や「if文」を宣言すると、「どの範囲までが対象なのか」ということを決めなければならないのですが、

Pythonの場合は、これを(宣言文の一行下の)「半角スペースの量」で判断しています。

(※1 一度インデントを行って、「半角スペースの量」を決めたら、以降のソースは、(多分)「半角スペースの量」の倍数にする必要があります。例えば、最初の「半角スペースの量」を「2個」にしたら、「2,4,6,8」の量にしなければなりません)

(※2 今回のプログラムでは、Pythonのインデントにおいて標準の半角スペースの量である「4個」にしています。そのため、「半角スペースの量」は「4個」と「8個」になっています)


例えば、以下のようなPyhtonのサンプルソースがあった場合、

for count1 in range(3):
    for count2 in range(3):
        print(str(count1))
        print(str(count2))
print("test")

C言語では、

for (int count1 = 0; count1 < 3; count1 += 1){
    for (int count2 = 0; count2 < 3; count2 += 1){
        printf("%d \n", count1))
        printf("%d \n", count2))
    }
}
printf("test\n")

のような「スコープの配置」になります。

({}が、宣言したループ文の有効範囲です)



try:

try文です。

この中でプログラムのエラーが発生した場合は、強制終了にはならず、プログラムの実行部分は「except:」にワープします


・なぜ「try文」をいれているのか

これは、ALISのAPIの「続きのページ」を読み込んだ際、エラーになる可能性があるからです。

もし仮に、「続きのページ」が存在しなかったら、強制終了してしまい、送られてきたデータを表示することができなくなるのですが……

それを防ぎたいので、「try文」を入れることにしました。


url_name1 = 'https://alis.to/api/articles/recent?limit=' + str(limit1) + '&page=' + str(page1)

前々からよく出てくる、URLの設定ですが、

このコードでは、途中に書かれている変数の値を「str型」に変換しているので、任意の値を文字列の中にいれることができます


また、以下のプログラムで、変数を「1」ずつ加算する

page1 += 1

を宣言しているので、ループする度に「page1」の値が増えていくことから

https://alis.to/api/articles/recent?limit=1&page=1' # 1回目の実行
https://alis.to/api/articles/recent?limit=1&page=2' # 2回目の実行
https://alis.to/api/articles/recent?limit=1&page=3' # 3回目の実行

のように、URL文の中の「page=」の部分だけが、変化するようになっています



print("Load : " + str(count1))

何回目のループなのかを確認するプログラムです。なくても問題なし。


pprint.pprint(article_box1["Items"])

前にも説明した、辞書型のデータをコンソール画面に表示するプログラムです。

ただし、このプログラムは「for文」内にあるので、(コード内にバグがなければ)「3回」呼び出されます。


print("")

表示されるものを改行したいから追加。見やすくするためのものです。


#time.sleep(1)

プログラムを「1秒間」停止させるもの。

ALISサーバーに負荷をかけたくない時は、入れておいたほうが良さそうですが、今回は特に問題ない規模なので、コメント文で無効化させています


except:

try文とセットで使用する例外処理。


print("Error!")
break

try文の中でバグを生じさせたら、「Error!」と表示させた後、「break」でループ文から強制離脱を行います

(「break」を入れておかないと、エラーが発生するプログラムを何度も繰り返してしまうので注意)


○ 実行結果

Content image

上記のプログラムを実行した場合、新着記事の「1~3番目」を1個ずつ順番に表示していきます



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




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


公開日:2018/09/10
獲得ALIS:29.60
ゆうき's icon'
  • ゆうき
  • @yuuki

投稿者の人気記事
コメントする
コメントする
こちらもおすすめ!
Eye catch
クリプト

【第8回】あの仮想通貨はいま「テレグラム-TON/Gram」

Like token Tip token
69.90 ALIS
Eye catch
クリプト

Uniswap v3を完全に理解した

Like token Tip token
18.92 ALIS
Eye catch
クリプト

UNISWAPでALISをETHに交換してみた

Like token Tip token
39.40 ALIS
Eye catch
クリプト

スーパーコンピュータ「京」でマイニングしたら

Like token Tip token
1.06k ALIS
Eye catch
クリプト

Uniswap(ユニスワップ)で$ALISのイールドファーミング(流動性提供)してみた

Like token Tip token
59.99 ALIS
Eye catch
クリプト

Polygon(Matic)で、よく使うサイト(DeFi,Dapps)をまとめてみた

Like token Tip token
235.30 ALIS
Eye catch
クリプト

Eth2.0のステークによるDeFiへの影響を考える。

Like token Tip token
43.10 ALIS
Eye catch
クリプト

Bitcoin史 〜0.00076ドルから6万ドルへの歩み〜

Like token Tip token
947.13 ALIS
Eye catch
クリプト

ジョークコインとして出発したDogecoin(ドージコイン)の誕生から現在まで。注目される非証券性🐶

Like token Tip token
38.31 ALIS
Eye catch
クリプト

2021年1月以降バイナンスに上場した銘柄を140文字以内でざっくりレビュー(Twitter向け情報まとめ)

Like token Tip token
38.10 ALIS
Eye catch
クリプト

バイナンスの信用取引(マージン取引)を徹底解説~アカウントの開設方法から証拠金計算例まで~

Like token Tip token
3.50 ALIS
Eye catch
クリプト

クリプトスペルズで入手したMCHCを引き出す方法

Like token Tip token
196.20 ALIS