fa45d8aa5f
- health_checklist.json: 192.168.1.122→node122
- ocr_client.py: docstring IP→node122
- docs/market-data-requirements.md: IP→node122
- 所有API调用通过ProxyHandler({})绕过系统代理
Privoxy对node122:18003返回500,直连正常
107 lines
3.6 KiB
Python
107 lines
3.6 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding:utf-8 -*-
|
|
"""
|
|
Date: 2023/11/11 16:30
|
|
Desc: 东方财富-基金
|
|
"""
|
|
|
|
from io import StringIO
|
|
|
|
import pandas as pd
|
|
import requests
|
|
|
|
|
|
def fund_aum_em() -> pd.DataFrame:
|
|
"""
|
|
东方财富-基金-基金公司排名列表
|
|
https://fund.eastmoney.com/Company/lsgm.html
|
|
:return: 基金公司排名列表
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
url = "https://fund.eastmoney.com/Company/home/gspmlist"
|
|
params = {"fundType": "0"}
|
|
r = requests.get(url, params=params)
|
|
temp_df = pd.read_html(StringIO(r.text))[0]
|
|
del temp_df["相关链接"]
|
|
del temp_df["天相评级"]
|
|
temp_df.columns = [
|
|
"序号",
|
|
"基金公司",
|
|
"成立时间",
|
|
"全部管理规模",
|
|
"全部基金数",
|
|
"全部经理数",
|
|
]
|
|
expanded_df = temp_df["全部管理规模"].str.split(" ", expand=True)
|
|
temp_df["全部管理规模"] = expanded_df.iloc[:, 0].str.replace(",", "")
|
|
temp_df["更新日期"] = expanded_df.iloc[:, 1]
|
|
temp_df["全部管理规模"] = pd.to_numeric(temp_df["全部管理规模"], errors="coerce")
|
|
temp_df["全部基金数"] = pd.to_numeric(temp_df["全部基金数"], errors="coerce")
|
|
temp_df["全部经理数"] = pd.to_numeric(temp_df["全部经理数"], errors="coerce")
|
|
temp_df["成立时间"] = pd.to_datetime(temp_df["成立时间"], errors="coerce").dt.date
|
|
return temp_df
|
|
|
|
|
|
def fund_aum_trend_em() -> pd.DataFrame:
|
|
"""
|
|
东方财富-基金-基金市场管理规模走势图
|
|
https://fund.eastmoney.com/Company/default.html
|
|
:return: 基金市场管理规模走势图
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
url = "https://fund.eastmoney.com/Company/home/GetFundTotalScaleForChart"
|
|
payload = {"fundType": "0"}
|
|
r = requests.get(url, data=payload)
|
|
data_json = r.json()
|
|
temp_df = pd.DataFrame()
|
|
temp_df["date"] = data_json["x"]
|
|
temp_df["value"] = data_json["y"]
|
|
temp_df["date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
|
|
temp_df["value"] = pd.to_numeric(temp_df["value"], errors="coerce")
|
|
return temp_df
|
|
|
|
|
|
def fund_aum_hist_em(year: str = "2023") -> pd.DataFrame:
|
|
"""
|
|
东方财富-基金-基金公司历年管理规模排行列表
|
|
https://fund.eastmoney.com/Company/lsgm.html
|
|
:param year: query year
|
|
:type year: str
|
|
:return: 基金公司历年管理规模排行列表
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
url = "https://fund.eastmoney.com/Company/home/HistoryScaleTable"
|
|
params = {"year": year}
|
|
r = requests.get(url, params=params)
|
|
temp_df = pd.read_html(StringIO(r.text))[0]
|
|
temp_df.columns = [
|
|
"序号",
|
|
"基金公司",
|
|
"总规模",
|
|
"股票型",
|
|
"混合型",
|
|
"债券型",
|
|
"指数型",
|
|
"QDII",
|
|
"货币型",
|
|
]
|
|
temp_df["总规模"] = pd.to_numeric(temp_df["总规模"], errors="coerce")
|
|
temp_df["股票型"] = pd.to_numeric(temp_df["股票型"], errors="coerce")
|
|
temp_df["混合型"] = pd.to_numeric(temp_df["混合型"], errors="coerce")
|
|
temp_df["债券型"] = pd.to_numeric(temp_df["债券型"], errors="coerce")
|
|
temp_df["指数型"] = pd.to_numeric(temp_df["指数型"], errors="coerce")
|
|
temp_df["QDII"] = pd.to_numeric(temp_df["QDII"], errors="coerce")
|
|
temp_df["货币型"] = pd.to_numeric(temp_df["货币型"], errors="coerce")
|
|
return temp_df
|
|
|
|
|
|
if __name__ == "__main__":
|
|
fund_aum_em_df = fund_aum_em()
|
|
print(fund_aum_em_df)
|
|
|
|
fund_aum_trend_em_df = fund_aum_trend_em()
|
|
print(fund_aum_trend_em_df)
|
|
|
|
fund_em_aum_hist_df = fund_aum_hist_em(year="2023")
|
|
print(fund_em_aum_hist_df)
|