import pandas as pd import yfinance as yf import yfinance.shared as share import sys print(sys.version) print('yfinance version: ' + yf.__version__) yf.pdr_override() # <== that's all it takes :-) yf.enable_debug_mode() def get_ticker_history(_ticker, _start_date, _end_date, _interval, _period): empty_frame = pd.DataFrame() _ticker = _ticker.strip() ticker_data = pd.DataFrame() try: if _interval is not None: try: ticker_data = yf.Ticker(_ticker, session=None).history(raise_errors=True, rounding=True, period=_period, interval=_interval, actions=True) # , repair=True except ValueError as e: print(e) except Exception as e: ticker_data = empty_frame if not len(list(share._ERRORS.keys())) <= 0: # print('** Failed ticker downloads:', list(share._ERRORS.keys()), ' ', _ticker) raise Exception('Failed ticker downloads:', list(share._ERRORS.keys()), ' ', _ticker) return finally: pass if ticker_data.empty: return if ticker_data.index.tz is not None: ticker_data = ticker_data.tz_convert('UTC') else: ticker_data = ticker_data.tz_localize('UTC') except ValueError as e: print(e) except Exception as e: ticker_data = empty_frame finally: return ticker_data if __name__ == "__main__": missing_vals = [] # initialize list of lists data = [['Grainger plc', 'GRI.L'], ['Pets at home plc', 'PETS.L'], ['xxx National Express xxx', 'NEX.L'], ['Grainger plc', 'GRI.L'], ['British Land Company PLC', 'BLND.L']] # Create the pandas DataFrame df = pd.DataFrame(data, columns=['Name', 'Ticker']) try: interval = '1h' date_period = '1mo' for i in range(len(df)): print(df.loc[i, "Name"], df.loc[i, "Ticker"]) ticker = df.loc[i, "Ticker"].strip() ret_data = get_ticker_history(ticker, None, None, interval, date_period) if not ret_data.empty: print(ret_data.head(n=3)) # if not ret_data.empty: # ticker_info = set_ticker.info # if 'symbol' in ticker_info: # print(ticker_info['symbol']) # else: # print('failed to retrieve .info data') print('loop '+ticker) except ValueError as e: print(e) except Exception as e: print(e) finally: print('finished')