読者です 読者をやめる 読者になる 読者になる

Tips

IT技術系Tips

分足の為替データを取得するスクリプト(Python)

ロシア語のサイトだが、アカウント作成とか面倒なことなしにデータが置いてあった。
言語の選択で英語も可。
Архив котировок Forex для ProSuite и MetaStock


いちいち手動でダウンロードして全部解凍するのがめんどいから
各ページにアクセスしてzipをダウンロードし、解凍して保存するスクリプトを書いた。
github.com

こないだ試したプログレスバー(tqdm)も使った。
kaerouka.hatenablog.com

前回はipythonから試してダメだったが、cPythonではさほど問題なかった。
少しだけ問題があって、たぶんtqdmは別スレッドで動作しているので、tqdmでプログレスバーを出す前に
標準出力に出力してるとちょっと変な動作になった。
こんな感じ。

データの配置場所のURLを収集中。
  0%|          | 0/4698 [00:00<?, ?it/s]収集完了。
データを取得中。
 31%|███       | 1464/4698 [52:19<1:56:39,  2.16s/it]

収集完了のprintは、プログレスバーを出すより前にやってるはずなんだけど、こんなんなっちゃった。
対処法がありそうだけど面倒だから放置。


プログラムの実行速度だけど、終わるまでに3時間くらいかかる。
5000個近いファイルのダウンロードになるみたいで、並列処理無しじゃこんなもんか。


2016/02/03 追記
tqdm使う前にflushしたらずれなくなった。

    print("データを取得中。")

    # tqdmが非同期で、表示がずれるためいったんflush
    stdout.flush()

    for data_url in tqdm.tqdm(urls):

並列処理しながらtqdm使ったらどうなっちゃうんだろう・・・w