CEDApy/CEDA/economic/ECB.py

33 lines
1.1 KiB
Python

import requests
import pandas as pd
from bs4 import BeautifulSoup
url = {
"ECB": "https://sdw.ecb.europa.eu/",
"ECB-API": "http://sdw-wsrest.ecb.europa.eu/service/data/"
}
class ECBData(object):
def __init__(self) -> None:
pass
def toc(self):
r = requests.get(url["ECB"] + "browse.do?node=9689727")
dataset_list = BeautifulSoup(r.text, "html.parser").find_all("div", {"id": "currentMaximizeNode0"})
uls = dataset_list[0].find_all("ul")
lis = [li for ul in uls for li in ul.find_all("li")]
li_text = [li.text.strip() for li in lis]
name, metadata = [], []
for i in range(0, len(li_text)):
name.append(li_text[i].split("-")[0])
metadata.append(li_text[i].split("-")[1])
li_urls = [url["ECB"] + li.a.get("href") for li in lis]
toc = pd.DataFrame({"name": name, "metadata":metadata, "url":li_urls})
return toc
def download_data(self, datasetname:str=None):
tmp_url = url["ECB-API"] + "{}?format=csvdata".format(datasetname)
data = pd.read_csv(tmp_url)
return data