Part of the blog series related to making web service calls to Eoddata.com. Overview of the web service can be found here.
ExchangeList
call: http://ws.eoddata.com/data.asmx?op=ExchangeList
In [1]:
%run ../../code/version_check.py
Date Created: 2017-03-25
Date of Change Change Notes
-------------- ----------------------------------------------------------------
2017-03-25 Initial draft
2017-04-02 - Changed any references for `get_exchange_list()` to `exchange_list()`
- Client class function returns data in fixed order now
In [10]:
%run ../../code/eoddata.py
import pandas as pd
import requests as r
ws = 'http://ws.eoddata.com/data.asmx'
ns='http://ws.eoddata.com/Data'
with (Client()) as eoddata:
token = eoddata.get_token()
In [3]:
session = r.Session()
call = 'ExchangeList'
kwargs = {'Token': token,}
pattern = ".//{%s}EXCHANGE"
url = '/'.join((ws, call))
response = session.get(url, params=kwargs, stream=True)
if response.status_code == 200:
root = etree.parse(response.raw).getroot()
session.close()
In [4]:
elements = root.findall(pattern %(ns))
In [5]:
exchanges = sorted(element.get('Code') for element in elements)
exchanges
Out[5]:
In [6]:
with open('../../data/exchanges.csv', 'w') as f:
for element in elements:
f.write('"%s"\n' % '","'.join(element.attrib.values()))
In [7]:
for item in root.items():
print (item)
In [8]:
for element in root.iter():
print(element.attrib)
In [9]:
def ExchangeList(session, token):
call = 'ExchangeList'
kwargs = {'Token': token,}
pattern = ".//{%s}EXCHANGE"
url = '/'.join((ws, call))
response = session.get(url, params=kwargs, stream=True)
if response.status_code == 200:
root = etree.parse(response.raw).getroot()
return sorted(element.get('Code') for element in elements)
In [10]:
session = r.session()
exchanges = ExchangeList(session, token)
exchanges
session.close()
In [11]:
# pandas dataframe is returned
df = eoddata.exchange_list()
df.head()
Out[11]: