Code: Alles auswählen
#!/usr/bin/env python
import csv
import httplib
from datetime import date as Date, datetime as DateTime
from itertools import count
from urllib import urlencode, urlopen
STOCK_PRICE_URL = 'http://www.comdirect.de/inf/kursdaten/historic.csv'
def convert_float(string):
return float(string.replace('.', '').replace(',', '.'))
def get_stock_price_data(
trading_id, start_date, end_date, with_earnings=True, interval=16
):
if start_date > end_date:
raise ValueError('start (%s) > end (%s)' % (start_date, end_date))
result = list()
for offset in count():
csv_file = urlopen(
STOCK_PRICE_URL,
urlencode(
[
(
'DATETIME_TZ_START_RANGE_FORMATED',
start_date.strftime('%d.%m.%Y')
),
('ID_NOTATION', str(trading_id)),
('INTERVALL', str(interval)),
('OFFSET', str(offset)),
(
'DATETIME_TZ_END_RANGE_FORMATED',
end_date.strftime('%d.%m.%Y')
),
('WITH_EARNINGS', str(with_earnings).lower())
]
)
)
try:
if csv_file.getcode() != httplib.OK:
break
result.extend(
[
DateTime.combine(
DateTime.strptime(row[0], '%d.%m.%Y'),
DateTime.strptime(row[1], '%H:%M').time()
)
] + map(convert_float, row[2:])
for row in csv.reader(csv_file, delimiter=';')
if len(row) > 1 and row[0] != 'Datum'
)
finally:
csv_file.close()
return result
def main():
stock_price_data = get_stock_price_data(
11050544, Date(2012, 1, 1), Date(2012, 1, 8)
)
print stock_price_data
if __name__ == '__main__':
main()