From a316ec5f5c5ae03c4bc69c6cf73b673f796c536e Mon Sep 17 00:00:00 2001 From: TerenceLiu Date: Fri, 28 Jan 2022 12:12:34 +0800 Subject: [PATCH] add XHData --- CEDA/economic/XHData.py | 237 ++++++---------------------------------- README.md | 2 +- 2 files changed, 35 insertions(+), 204 deletions(-) diff --git a/CEDA/economic/XHData.py b/CEDA/economic/XHData.py index 5b65126..b0f0cb9 100644 --- a/CEDA/economic/XHData.py +++ b/CEDA/economic/XHData.py @@ -1,6 +1,14 @@ import ast +import json import requests import pandas as pd +from tqdm import tqdm +from pygtrans import Translate + +def translate(text:str=None): + client = Translate() + text = client.translate(text, target="en") + return text.translatedText url = { "CNFIN": "https://api.cnfin.com/roll/charts/" @@ -9,215 +17,38 @@ url = { class XHData(object): def __init__(self): pass + - def download(self, id:int=None): - tmp_url = url["CNFIN"] + "getContent?ids={}".format(id) + def toc(self): + urls, tid, titles, titles_en = [], [], [], [] + for i in tqdm(range(12005, 12100)): + url = "https://api.cnfin.com/roll/charts/getContent?ids={}".format(i) + r = requests.get(url) + if r.ok: + data = r.json() + if data["data"] == "图表数据不存在": + pass + else: + urls.append(url) + tid.append(i) + title = json.loads(data["data"]["list"][0]["modelCode"])["title"]["text"] + titles.append(title) + titles_en.append(translate(text=title)) + + return pd.DataFrame({"urls":urls, "id":tid, "title_zh":titles, "title_en":titles_en}) + + def download_data(self, iid:int=None): + tmp_url = url["CNFIN"] + "getContent?ids={}".format(iid) r = requests.get(tmp_url) if r.ok: raw_data = r.json() data = pd.DataFrame(ast.literal_eval(raw_data["data"]["list"][0]["content"])) + data.columns = ["date", "data"] return data else: return ValueError("Something went wrong, try again later") - - def GDP(self): - """ - quarterly - """ - data = self.download(id=12006) - data.columns = ["date", "data"] - return data - - def Household_Consumption_SPLY(self): - """ - quarterly - """ - data = self.download(id=12073) - data.columns = ["date", "data"] - return data - - def Household_Consumption(self): - """ - quarterly - """ - data = self.download(id=12074) - data.columns = ["date", "data"] - return data - - def Per_capita_Disposable_Income(self): - """ - quarterly - """ - data = self.download(id=12071) - data.columns = ["date", "data"] - return data - - def Urban_Average_Salary_Annual(self): - """ - quarterly - """ - data = self.download(id=12070) - data.columns = ["date", "data"] - return data - - def Urban_Uneployment_Rate(self): - """ - quarterly - """ - data = self.download(id=12069) - data.columns = ["date", "data"] - return data - - def Government_Bound_Return_Rate_10_Year(self): - """ - quarterly - """ - data = self.download(id=12068) - data.columns = ["date", "data"] - return data - - def Government_Bound_Return_Rate_3_Year(self): - """ - quarterly - """ - data = self.download(id=12067) - data.columns = ["date", "data"] - return data - - def Government_Bound_Return_Rate_1_Year(self): - """ - quarterly - """ - data = self.download(id=12066) - data.columns = ["date", "data"] - return data - - def LPR_1_Year(self): - """ - Monthly - """ - data = self.download(id=12065) - data.columns = ["date", "data"] - return data - - def SHIBOR_3_Month(self): - """ - Daily - """ - data = self.download(id=12064) - data.columns = ["date", "data"] - return data - - def SHIBOR_2_Week(self): - """ - Daily - """ - data = self.download(id=12063) - data.columns = ["date", "data"] - return data - - def SHIBOR_1_Day(self): - """ - Daily - """ - data = self.download(id=12063) - data.columns = ["date", "data"] - return data - - def Foreign_Exchange_Options(self): - data = self.download(id=12060) - data.columns = ["date", "data"] - return data - - def Foreign_Exchange_Swaps(self): - data = self.download(id=12059) - data.columns = ["date", "data"] - return data - - def Foreign_Exchange_Forward(self): - data = self.download(id=12058) - data.columns = ["date", "data"] - return data - - def Foreign_Exchange_Spot(self): - data = self.download(id=12057) - data.columns = ["date", "data"] - return data - - def Loan_to_Deposit(self): - data = self.download(id=12056) - data.columns = ["date", "data"] - return data - - def RMB_Deposits(self): - data = self.download(id=12055) - data.columns = ["date", "data"] - return data - - def RMB_Loan(self): - data = self.download(id=12054) - data.columns = ["date", "data"] - return data - - def M0_SPLY(self): - data = self.download(id=12053) - data.columns = ["date", "data"] - return data - - def M1_SPLY(self): - data = self.download(id=12052) - data.columns = ["date", "data"] - return data - - def M2_SPLY(self): - data = self.download(id=12051) - data.columns = ["date", "data"] - return data - - def M0(self): - data = self.download(id=12050) - data.columns = ["date", "data"] - return data - - def M1(self): - data = self.download(id=12049) - data.columns = ["date", "data"] - return data - - def M2(self): - data = self.download(id=12048) - data.columns = ["date", "data"] - return data - - def Total_Retail_Sales_of_Consumer_Goods_LP(self): - data = self.download(id=12047) - data.columns = ["date", "data"] - return data - - def Total_Retail_Sales_of_Consumer_Goods_SPLY(self): - data = self.download(id=12046) - data.columns = ["date", "data"] - return data - -""" -import json -import requests -from tqdm import tqdm - -urls, titles = [], [] -for i in tqdm(range(5000, 20000)): - url = "https://api.cnfin.com/roll/charts/getContent?ids={}".format(i) - r = requests.get(url) - if r.ok: - data = r.json() - if data["data"] == "图表数据不存在": - pass - else: - urls.append(url) - titles.append(json.loads(data["data"]["list"][0]["modelCode"])["title"]["text"]) -""" - - - - +if __name__ == "__main__": + xhdata = XHData() + toc = xhdata.toc() + data = xhdata.download_data(iid=12006) # GDP diff --git a/README.md b/README.md index 86c8326..effa08d 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ We have included multiple API for banks or statistics deparment of countries/reg * Asia: - [ ] `NBSCData` for [National Bureau of Statistics of China](http://www.stats.gov.cn/english/) - - [ ] `XHData` for [Xinhua](https://www.cnfin.com/data/macro-data/index.html) + - [x] `XHData` for [Xinhua](https://www.cnfin.com/data/macro-data/index.html) - [x] `BOJData` for [Bank of Japan](https://www.boj.or.jp/en/index.htm/) ### Market Data