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

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

新規登録して質問してみよう
ただいま回答率
85.35%
URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

6676閲覧

yahoo_finance_api2を実行した際のエラーについて

tamura1020231

総合スコア6

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2021/07/12 14:28

YahooFinanceのUS版のサイトより時系列データをダウンロードできるAPIがあります。
公式サイトのURL:https://pypi.org/project/yahoo-finance-api2/

「pip install yahoo_finance_api2」をインストールした後、
下記のコードを実行したのですが「JSONDecodeError: Expecting value: line 1 column 1 (char 0)」のエラーが発生してしまいます。

2021年7月9日までは正常に動作していたのですが、今朝プラグラムを実行させるとエラーがかえってくるようになっておりました。

また、ネットで検索してみるとアクセス制限の可能性もあるのかと思い、2時間ほど時間を空けて実行してみましたが同様のエラーとなりました。
さらに、自宅のネット回線とは別の回線からも(携帯電話回線のテザリング)当該プログラムを実行してみましたが同様のエラーとなっております。

なお、開発環境はgoogleColaboratoryを利用しておりましたが、
VSCodeをインストール後、同様プログラムを実行させてみましたが同様のエラーとなりました。

本件ご存じの方がいらっしゃいましたらご教示の程よろしくお願いします。

python

1import sys 2from yahoo_finance_api2 import share 3from yahoo_finance_api2.exceptions import YahooFinanceError 4 5my_share = share.Share('MSFT') 6symbol_data = None 7 8try: 9 symbol_data = my_share.get_historical(share.PERIOD_TYPE_DAY, 10 10, 11 share.FREQUENCY_TYPE_MINUTE, 12 5) 13except YahooFinanceError as e: 14 print(e.message) 15 sys.exit(1) 16 17print(symbol_data)

※2021年7月9日までは上記コードの「'MSFT'」を変更しながら取得したい銘柄情報の取得ができておりました。

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

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

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

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

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

guest

回答1

0

ベストアンサー

get_historical()が呼び出している share.pyの_download_symbol_dataを下記のように書き換えたところ、403 Forbiddenとなっています。
このため元のrequests.get(url).json()の部分でJsonDecodeErrorが発生しています。

# \Lib\site-packages\yahoo_finance_api2\share.py def _download_symbol_data(self, period_type, period, frequency_type, frequency): start_time, end_time = self._set_time_frame(period_type, period) ~~~ ).format(self.symbol, start_time, end_time, self._frequency_str(frequency_type, frequency)) #resp_json = requests.get(url).json() #2行追加。 response = requests.get(url) response.raise_for_status() (以下略)
Traceback (most recent call last): File ".\iop.py", line 9, in <module> symbol_data = my_share.get_historical(share.PERIOD_TYPE_DAY, File "***\lib\site-packages\yahoo_finance_api2\share.py", line 26, in get_historical data = self._download_symbol_data(period_type, period, File "***\lib\site-packages\yahoo_finance_api2\share.py", line 96, in _download_symbol_data resp.raise_for_status() File "***\lib\site-packages\requests\models.py", line 941, in raise_for_status raise HTTPError(http_error_msg, response=self) requests.exceptions.HTTPError: 403 Client Error: Forbidden for url:

yahoo financeのスクレイピングは規約違反なのでYAHOO FINANCE側がyahoo_finance_api2が使えないように対策したんじゃないですかね。

投稿2021/07/12 15:01

編集2021/07/12 15:05
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

tamura1020231

2021/07/13 14:34

twitterを見ると同じエラーで取得できない人がいたので、YAHOO FINANCE側の問題のようです! 困りましたが、様子を見て別の方法を考えてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問