質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Q&A

解決済

1回答

1903閲覧

jsmモジュールのアクセス制限を回避する方法

KenKenPaPPa

総合スコア24

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

0グッド

0クリップ

投稿2017/06/18 03:10

###前提・実現したいこと
現在python2.7.10で株価の情報を取得しようと思い、jsmモジュールを使っているのですが、411回アクセスしたいのですが、240回取得した時点でエラーが起きてしまいます。
206回アクセスした時点で15分スリープさせたのですが、何も変わらない状況です。
原因、対処法を教えていただけるとありがたいです。

###発生している問題・エラーメッセージ

Traceback (most recent call last): File "GetStockData.py", line 40, in <module> File "/Library/Python/2.7/site-packages/jsm/__init__.py", line 57, in get_historical_prices return p.get_range(ccode, start_date, end_date) File "/Library/Python/2.7/site-packages/jsm/historicalprices.py", line 125, in get_range p.fetch(start_date, end_date, ccode, self._range_type, page) File "/Library/Python/2.7/site-packages/jsm/historicalprices.py", line 42, in fetch raise CCODENotFoundException("couldn't find ccode") jsm.exceptions.CCODENotFoundException: couldn't find ccodeTraceback (most recent call last): File "GetStockData.py", line 40, in <module> File "/Library/Python/2.7/site-packages/jsm/__init__.py", line 57, in get_historical_prices return p.get_range(ccode, start_date, end_date) File "/Library/Python/2.7/site-packages/jsm/historicalprices.py", line 125, in get_range p.fetch(start_date, end_date, ccode, self._range_type, page) File "/Library/Python/2.7/site-packages/jsm/historicalprices.py", line 42, in fetch raise CCODENotFoundException("couldn't find ccode") jsm.exceptions.CCODENotFoundException: couldn't find ccode

###該当のソースコード

python

1#!/usr/bin/env python 2# -*- coding: utf-8 -*- 3import sys 4import codecs 5import jsm #Yahoo!ファイナンスからスクレイピングしたもの 6import datetime 7import warnings 8from time import sleep 9 10#sys.stdout = codecs.getwriter('utf_8')(sys.stdout) #utf-8の文字をプリント 11warnings.simplefilter("ignore", category=UserWarning) #警告無視 12 13q = jsm.Quotes() 14 15Code = ['1973', '2138', '2303', '2307', '2315', '2317', '2321', '2323', '2326', '2327', '2329', '2330', '2332', '2335', '2338', '2345', '2349', '2351', '2352', '2354', '2359', '2411', '2484', '3040', '3042', '3371', '3622', '3623', '3624', '3625', '3626', '3627', '3628', '3630', '3632', '3633', '3634', '3635', '3636', '3639', '3640', '3641', '3645', '3646', '3647', '3648', '3649', '3652', '3653', '3654', '3655', '3656', '3657', '3658', '3659', '3660', '3661', '3662', '3663', '3664', '3665', '3666', '3667', '3668', '3669', '3670', '3671', '3672', '3673', '3674', '3675', '3676', '3677', '3678', '3679', '3680', '3681', '3682', '3683', '3685', '3686', '3687', '3688', '3689', '3690', '3691', '3692', '3694', '3695', '3696', '3697', '3698', '3710', '3711', '3712', '3719', '3723', '3724', '3727', '3733', '3738', '3739', '3741', '3742', '3744', '3747', '3750', '3751', '3753', '3754', '3756', '3758', '3760', '3762', '3763', '3765', '3766', '3768', '3769', '3770', '3771', '3772', '3773', '3774', '3775', '3776', '3777', '3778', '3779', '3782', '3784', '3787', '3788', '3791', '3793', '3794', '3796', '3798', '3799', '3800', '3802', '3803', '3804', '3807', '3808', '3810', '3814', '3815', '3816', '3817', '3822', '3823', '3824', '3825', '3826', '3830', '3834', '3835', '3836', '3837', '3839', '3840', '3841', '3842', '3843', '3844', '3845', '3847', '3848', '3849', '3850', '3851', '3852', '3853', '3854', '3857', '3858', '3900', '3901', '3902', '3903', '3904', '3905', '3906', '3907', '3908', '3909', '3910', '3911', '3912', '3913', '3914', '3915', '3916', '3917', '3918', '3919', '3920', '3921', '3922', '3923', '3924', '3925', '3926', '3927', '3928', '3929', '3930', '3931', '3932', '3933', '3934', '3935', '3936', '3937', '3938', '3939', '3940', '3960', '3961', '3962', '3963', '3964', '3965', '3966', '3967', '3968', '3969', '3970', '3974', '3975', '3976', '3977', '3978', '3979', '3981', '3983', '3984', '3985', '3986', '3987', '3988', '4284', '4287', '4288', '4291', '4295', '4298', '4299', '4304', '4307', '4308', '4312', '4316', '4320', '4323', '4326', '4333', '4334', '4335', '4344', '4348', '4349', '4356', '4640', '4644', '4662', '4667', '4674', '4676', '4684', '4685', '4686', '4687', '4689', '4704', '4709', '4716', '4719', '4722', '4725', '4726', '4728', '4733', '4734', '4736', '4739', '4743', '4746', '4748', '4752', '4761', '4762', '4764', '4768', '4769', '4770', '4772', '4776', '4777', '4779', '4783', '4793', '4800', '4812', '4813', '4814', '4816', '4819', '4820', '4824', '4825', '4826', '4828', '4829', '4832', '4838', '4839', '4842', '4845', '4847', '6791', '6879', '6888', '6942', '6944', '7518', '7527', '7595', '7844', '7849', '7860', '8056', '8096', '9360', '9399', '9401', '9402', '9404', '9405', '9407', '9408', '9409', '9412', '9413', '9414', '9416', '9417', '9418', '9419', '9421', '9422', '9423', '9424', '9425', '9428', '9432', '9433', '9435', '9436', '9437', '9438', '9441', '9444', '9445', '9446', '9449', '9466', '9467', '9468', '9470', '9471', '9474', '9475', '9476', '9478', '9479', '9600', '9601', '9602', '9605', '9613', '9629', '9640', '9651', '9658', '9682', '9684', '9685', '9687', '9691', '9692', '9697', '9698', '9702', '9709', '9717', '9719', '9739', '9742', '9746', '9749', '9753', '9758', '9759', '9766', '9790', '9799', '9889', '9928', '9984'] 16 17#Code(証券コード)要素数 411 18 19start_date = datetime.date(2017, 5, 8) 20end_date = datetime.date(2017, 5, 12) 21 22start_stock = [] 23start_stock_it = [] 24start_stock_copy = list(start_stock) 25 26count_it_code = len(Code) 27#Historical_Prices = q.get_historical_prices(3986, jsm.DAILY, start_date, end_date) 28 29count_first = count_it_code/2 30 31count_second = count_it_code - count_first 32 33 34for i in range(count_it_code): 35 print i 36 Historical_Prices = q.get_historical_prices(Code[i], jsm.DAILY, start_date, end_date) #ある期間の株価を取得 37 count_day = len(Historical_Prices) 38 39 del start_stock[:] 40 41 #print Historical_Prices 42 for j in range(count_day): 43 44 Prices_split = str(Historical_Prices[j]).split() 45 46 Prices_split = Prices_split.pop(2) 47 Prices_split = Prices_split.split(':') 48 49 Prices_split = Prices_split.pop(1) 50 51 start_stock.append(Prices_split) 52 53 start_stock_copy = list(start_stock) 54 55 start_stock_it = start_stock_it + [start_stock_copy] 56 57 if i == 206: 58 sleep(900) 59 60print start_stock_it 61 62

###補足情報(言語/FW/ツール等のバージョンなど)
xcode
python2.7.10

jsmについて
https://pypi.python.org/pypi/jsm/0.19

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

要素240に入っている証券コードの会社の株価が存在していなかっただけでした。
お騒がせしました。

投稿2017/06/18 03:21

KenKenPaPPa

総合スコア24

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問