Había estado funcionando todo el tiempo antes de hoy. No sé por qué no funciona hoy.
import yfinance as yf df = yf.Ticker('MMM').history(start='2021-01-01',end='2021-07-10') File "D:\anaconda3\envs\tensorflow\lib\site-packages\yfinance\base.py", line 157, in history data = data.json() File "D:\anaconda3\envs\tensorflow\lib\site-packages\requests\models.py", line 900, in json return complexjson.loads(self.text, **kwargs) File "D:\anaconda3\envs\tensorflow\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "D:\anaconda3\envs\tensorflow\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "D:\anaconda3\envs\tensorflow\lib\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)Actualicé a la última versión y se resolvió el problema. Código de instalación para la última versión: pip install yfinance==0.1.62
Si alguien todavía tiene problemas con el error jsonDecoder. Intente eliminar yfin de venv de la carpeta pycharm. De alguna manera, mi sistema no estaba actualizando yfin en venv de pycharm. Tuve que eliminar manualmente la carpeta yfin y actualizar yfin. Ahora me funciona. Gracias https://stackoverflow.com/a/68601710/16442394
El parche a continuación solucionó mi problema: en /usr/local/lib/python3.8/dist-packages/yfinance/base.py Realice los cambios a continuación:
# Getting data from json num_tries = 4 url = "{}/v8/finance/chart/{}".format(self._base_url, self.ticker) while num_tries > 0: data = self.session.get( url=url, params=params, proxies=proxy, headers=utils.user_agent_headers ) if "Will be right back" in data.text: raise RuntimeError("*** YAHOO! FINANCE IS CURRENTLY DOWN! ***\n" "Our engineers are working quickly to resolve " "the issue. Thank you for your patience.") if data.status_code == 404: _time.sleep(0.5) num_tries -= 1 continue else: data = data.json() break if num_tries == 0: print("%s failed to get information"%self.ticker) data = {}