Closed tyolee closed 2 years ago
저도 같은 버전에서 동일한 문제 겪고 있습니다. 저번처럼 investing.com의 정책이 바뀌어서 크롤링 과정에서 문제가 생긴 걸까요?
저도 같은 버전에서 코스닥지수를 불러오는데 자꾸 JSONDcodeError: expecting value: line 1 column 1 (char 0) 에러가 나네요. 업데이트되고 괜찮아진줄 알았는데
저같은 경우에는 로컬에서 파이썬 파일을 돌릴때는 문제가 없는데 우분투 서버에서 파일을 돌리면 저 에러가 뜹니다. finance-datareader 버전은 둘 다 같습니다.
investing.com의 정책 변화에 대응하기 위해 Release Note 0.9.40에서 investing 내부에서 다른 데이터 소스를 사용하도록 수정하였습니다.
그런데, 이마저 막히고 말았네요. 덧붙여 investing.com 가 사용하고 있는 Cloudflare의 제한을 우회할 방법(cloudscaper)을 찾았으나 무료버전으로는 해결이 되지 않습니다.
현재 2개 안을 검토중 입니다.
1) 해외 데이터 경우 yahoo finance 등으로 데이터 소스를 변경 2) 크롤링 방식 변경(Selenium, CasperJS, Cypress, PhantomJS 등)
데이터 소스를 변경하는 방향은 investing 만큼 다양한 가격 데이터를 제공하는 곳이 없어서 약간 고민이 됩니다. 업데이트 후에 다시 알려드리도록 하겠습니다.
Release 0.9.50 에서 FIX 하였습니다. 상세한 내용을 아래 Release Note 참고하시기 바랍니다.
https://github.com/financedata-org/FinanceDataReader/wiki/Release-Note-0.9.50
최종 예외 메시지는 json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 입니다.
아주 간단하게 몇가지 테스트 해봤습니다.
import FinanceDataReader as fdr
AEX 지수는 에러 발생 fdr.DataReader('AEX') Traceback (most recent call last): File "/home/yklee/PycharmProjects/best_investor/venv/lib/python3.10/site-packages/IPython/core/interactiveshell.py", line 3441, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File "", line 1, in
fdr.DataReader('AEX')
File "/home/yklee/PycharmProjects/best_investor/venv/lib/python3.10/site-packages/FinanceDataReader/data.py", line 41, in DataReader
df = reader(symbol, start, end, exchange, data_source).read()
File "/home/yklee/PycharmProjects/best_investor/venv/lib/python3.10/site-packages/FinanceDataReader/investing/data.py", line 52, in read
curr_id = self._get_currid_investing(self.symbol, self.exchange)
File "/home/yklee/PycharmProjects/best_investor/venv/lib/python3.10/site-packages/FinanceDataReader/investing/data.py", line 21, in _get_currid_investing
jo = r.json()
File "/home/yklee/PycharmProjects/best_investor/venv/lib/python3.10/site-packages/requests/models.py", line 900, in json
return complexjson.loads(self.text, **kwargs)
File "/usr/lib/python3.10/json/init.py", line 346, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.10/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.10/json/decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
US500도 에러발생 fdr.DataReader('US500') Traceback (most recent call last): File "/home/yklee/PycharmProjects/best_investor/venv/lib/python3.10/site-packages/IPython/core/interactiveshell.py", line 3441, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File "", line 1, in
fdr.DataReader('US500')
File "/home/yklee/PycharmProjects/best_investor/venv/lib/python3.10/site-packages/FinanceDataReader/data.py", line 41, in DataReader
df = reader(symbol, start, end, exchange, data_source).read()
File "/home/yklee/PycharmProjects/best_investor/venv/lib/python3.10/site-packages/FinanceDataReader/investing/data.py", line 52, in read
curr_id = self._get_currid_investing(self.symbol, self.exchange)
File "/home/yklee/PycharmProjects/best_investor/venv/lib/python3.10/site-packages/FinanceDataReader/investing/data.py", line 21, in _get_currid_investing
jo = r.json()
File "/home/yklee/PycharmProjects/best_investor/venv/lib/python3.10/site-packages/requests/models.py", line 900, in json
return complexjson.loads(self.text, **kwargs)
File "/usr/lib/python3.10/json/init.py", line 346, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.10/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.10/json/decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
삼성전자는 불러와짐 fdr.DataReader('005930') Out[8]: Open High Low Close Volume Change Date
1998-07-23 1096 1109 986 987 711860 NaN 1998-07-24 986 1003 908 961 864250 -0.026342 1998-07-25 847 930 847 847 860060 -0.118626 1998-07-27 809 847 791 829 918890 -0.021251 1998-07-28 837 856 821 838 491810 0.010856 ... ... ... ... ... ...
fdr 뒷단에서 exchange에 따라 동작이 달라지고 있는 것 같은데, 혹시 investing쪽 api 응답이 바뀐건 아닌지 확인 부탁 드립니다.
fdr 버전은 0.9.42 사용중입니다.