Yfinance KeyError: 'regularMarketOpen'

Я написал код ниже, но он выдает ошибку. Это дает KeyError: «regularMarketOpen».

Поэтому я попытался найти решение здесь и обновил base.py но проблема все еще возникает. Как это исправить?

stk_list = ['A', 'AAL', 'AAP', 'AAPL', 'ABBV', 'ABC']

rows = []

for ticker in stk_list:
    stk_container = yf.Ticker(ticker)
    try:
        stk_info = stk_container.info
        rows.append(stk_info)
    except IndexError as e:
        print(f'{ticker}: {e}') #print the ticker and the error
    
df = pd.DataFrame(rows)
subset_df = df[['symbol', 'longName', 'sector', 'industry', 'trailingPE', 'priceToBook', 'trailingEps', 'dividendYield']]

subset_df.head(10)
KeyError                                  Traceback (most recent call last)
<ipython-input-8-15d77c81339f> in <module>
      6     stk_container = yf.Ticker(ticker)
      7     try:
----> 8         stk_info = stk_container.info
      9         rows.append(stk_info)
     10     except IndexError as e:

/opt/anaconda3/lib/python3.7/site-packages/yfinance/ticker.py in info(self)
    136     @property
    137     def info(self):
--> 138         return self.get_info()
    139 
    140     @property

/opt/anaconda3/lib/python3.7/site-packages/yfinance/base.py in get_info(self, proxy, as_dict, *args, **kwargs)
    414 
    415     def get_info(self, proxy=None, as_dict=False, *args, **kwargs):
--> 416         self._get_fundamentals(proxy)
    417         data = self._info
    418         if as_dict:

/opt/anaconda3/lib/python3.7/site-packages/yfinance/base.py in _get_fundamentals(self, kind, proxy)
    317                 self._info.update(data[item])
    318 
--> 319         self._info['regularMarketPrice'] = self._info['regularMarketOpen']
    320         self._info['logo_url'] = ""
    321         try:

KeyError: 'regularMarketOpen'

person Community    schedule 03.09.2020    source источник
comment
Открытая проблема: github.com/ranaroussi/yfinance/issues/353   -  person AlexisG    schedule 03.09.2020


Ответы (1)


Я исправил эту проблему, вставив

url = "{}/{}".format(self._scrape_url, self.ticker)

выше

data = utils.get_json(url+'/financials', proxy)

in yfinance/base.py.

person Stephen Stewart    schedule 27.03.2021
comment
Я предлагаю вам отредактировать свой ответ, чтобы объяснить, почему это решает проблему, а не просто скопировать код. - person miquelvir; 28.03.2021