[Tutor] Wedscraping Yahoo API

Joe joseph_rodrigues44 at yahoo.com
Mon Feb 20 09:32:09 EST 2017


Hi,
I keep getting the following error as I am new to programming and I am following a tutorial and I am using Python 3.6. Can you please point me in the right direction as to what I am doing wrong. This is code I am running
import datetime as dtimport matplotlib.pyplot as pltfrom matplotlib import style#from matplotlib.finance import candlestick_ohlcimport matplotlib.dates as mdatesimport pandas as pdimport pandas_datareader.data as webimport bs4 as bsimport pickleimport requestsimport osimport csvimport numpy as npimport time
style.use('ggplot')
def save_tsx_tickers():    resp = requests.get('http://web.tmxmoney.com/indices.php?section=tsx&index=%5ETSX')    soup = bs.BeautifulSoup(resp.text, "lxml")    table = soup.find('table', {'class': 'indices-table'})    tickers = []    for row in table.findAll('tr')[1:]:        ticker = row.findAll('td')[1].text        tickers.append(ticker.replace(".","-") + ".TO")
    with open("tsxtickers.pickle", "wb") as f:        pickle.dump(tickers, f)
    #print(tickers)        return tickers
def get_data_from_yahoo(reload_tsx = False):    if reload_tsx:        tickers = save_tsx_tickers()    else:        with open("tsxtickers.pickle", "rb") as f:            tickers = pickle.load(f)
    if not os.path.exists('stock_dfs'):        os.makedirs('stock_dfs')
    start = dt.datetime(2000, 1, 1)    end = dt.datetime(2016, 12, 31)
    for i in tickers:        if not os.path.exists('stock_dfs/{}.csv'.format(i)):            time.sleep(2)            df = web.DataReader(i, 'yahoo', start, end)            df.to_csv('stock_dfs/{}.csv'.format(i))        else:            print('Already have {}'.format(i))


However, I keep getting this error. Please help in identifying the problem. Thank you.


Traceback (most recent call last):  File "<pyshell#3>", line 1, in <module>    get_data_from_yahoo()  File "C:\Users\Joe\Desktop\joe\Tutorial Python.py", line 50, in get_data_from_yahoo    df = web.DataReader(i, 'yahoo', start, end)  File "C:\Users\Joe\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas_datareader\data.py", line 116, in DataReader    session=session).read()  File "C:\Users\Joe\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas_datareader\yahoo\daily.py", line 76, in read    df = super(YahooDailyReader, self).read()  File "C:\Users\Joe\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas_datareader\base.py", line 155, in read    df = self._read_one_data(self.url, params=self._get_params(self.symbols))  File "C:\Users\Joe\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas_datareader\base.py", line 74, in _read_one_data    out = self._read_url_as_StringIO(url, params=params)  File "C:\Users\Joe\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas_datareader\base.py", line 85, in _read_url_as_StringIO    response = self._get_response(url, params=params)  File "C:\Users\Joe\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas_datareader\base.py", line 120, in _get_response    raise RemoteDataError('Unable to read URL: {0}'.format(url))pandas_datareader._utils.RemoteDataError: Unable to read URL: http://ichart.finance.yahoo.com/table.csv?s=OTEX.TO&a=0&b=1&c=2000&d=11&e=31&f=2016&g=d&ignore=.csv


More information about the Tutor mailing list