search
クリプト

【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
Article registration Article registration
ゆうき's icon'
  • ゆうき
  • @yuuki

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

【初心者向け】JPYCを購入して使ってみました!

暗号資産ジョシ校生 蟻巣 2021/06/30
Like token Tip token
30.03 ALIS
Eye catch
クリプト

コインチェックに上場が決まったEnjin Coin(エンジンコイン)コインを解説

昆布森ちゃん 2021/01/24
Like token Tip token
21.49 ALIS
Eye catch
クリプト

【初心者向け】$MCHCの基本情報と獲得方法

暗号資産ジョシ校生 蟻巣 2021/07/14
Like token Tip token
32.32 ALIS
Eye catch
クリプト

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

昆布森ちゃん 2020/06/15
Like token Tip token
3.50 ALIS
Eye catch
クリプト

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

大田コウキ 2021/04/06
Like token Tip token
947.13 ALIS
Eye catch
クリプト

CoinList(コインリスト)の登録方法

Taka 2021/02/25
Like token Tip token
15.55 ALIS
Eye catch
クリプト

【DeFi】複利でトークンを運用してくれるサイト

KTAG 2021/02/22
Like token Tip token
54.01 ALIS
Eye catch
クリプト

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

CryptoChick 2020/03/05
Like token Tip token
44.10 ALIS
Eye catch
クリプト

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

Taka 2021/07/24
Like token Tip token
69.90 ALIS
Eye catch
クリプト

Uniswap v3を完全に理解した

池田らいく 2021/04/04
Like token Tip token
18.92 ALIS
Eye catch
クリプト

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

Macky3216 2020/09/28
Like token Tip token
40.40 ALIS
Eye catch
クリプト

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

昆布森ちゃん 2021/03/16
Like token Tip token
38.10 ALIS