Source code for koapy.utils.data.YahooFinanceKrxHistoricalDailyPriceDataDownloader
import io
import pandas as pd
import requests
[docs]class YahooFinanceKrxHistoricalDailyPriceDataDownloader:
def __init__(self):
self._headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36",
}
[docs] def download(self, symbol, start_date=None, end_date=None):
if start_date is None:
start_date = pd.Timestamp(1980, 1, 1)
elif not isinstance(start_date, pd.Timestamp):
start_date = pd.Timestamp(start_date)
if end_date is None:
end_date = pd.Timestamp.now().normalize() + pd.Timedelta(1, unit="day")
elif not isinstance(end_date, pd.Timestamp):
end_date = pd.Timestamp(end_date)
url = (
"https://query1.finance.yahoo.com/v7/finance/download/%s.KS"
% symbol.upper()
)
params = {
"period1": int(start_date.timestamp()),
"period2": int(end_date.timestamp()),
"interval": "1d",
"events": "history",
"includeAdjustedClose": "true",
}
response = requests.get(url, params=params, headers=self._headers)
df = pd.read_csv(
io.BytesIO(response.content), parse_dates=["Date"], index_col="Date"
)
return df