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,直连正常
1319 lines
42 KiB
Python
1319 lines
42 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding:utf-8 -*-
|
|
"""
|
|
Date: 2026/1/20 17:00
|
|
Desc: 东方财富网站-天天基金网-基金数据-开放式基金净值
|
|
https://fund.eastmoney.com/manager/default.html#dt14;mcreturnjson;ftall;pn20;pi1;scabbname;stasc
|
|
1.基金经理基本数据, 建议包含:基金经理代码,基金经理姓名,从业起始日期,现任基金公司,管理资产总规模,上述数据可在"基金经理列表:
|
|
https://fund.eastmoney.com/manager/default.html#dt14;mcreturnjson;ftall;pn20;pi1;scabbname;stasc 和
|
|
"基金经理理档案如:https://fund.eastmoney.com/manager/30040164.html 获取.
|
|
2.基金经理任职数据:可调取全部或特定经理,管理的基金数据,建议包含:基金经理代码,基金经理姓名,基金代码,基金简称,
|
|
经理位次(在当前基金的经理中排第几位),起始任职时间,截止任职时间,任职回报.在特定基金的经理信息中可以获取如:
|
|
https://fundf10.eastmoney.com/jjjl_001810.html
|
|
3.在接口:fund_basic"公募基金列表"增加数据"基金经理代码"(或第一基金经理代码),
|
|
"基金经理姓名"(或第一基金经理姓名),"当前基金经理人数","当前经理任职起始时间".
|
|
用户ID:269993
|
|
"""
|
|
|
|
import json
|
|
import math
|
|
import time
|
|
from io import StringIO
|
|
|
|
import pandas as pd
|
|
import py_mini_racer
|
|
import requests
|
|
|
|
from akshare.utils import demjson
|
|
from akshare.utils.cons import headers
|
|
from akshare.utils.tqdm import get_tqdm
|
|
|
|
|
|
def fund_purchase_em() -> pd.DataFrame:
|
|
"""
|
|
东方财富网站-天天基金网-基金数据-基金申购状态
|
|
https://fund.eastmoney.com/Fund_sgzt_bzdm.html#fcode,asc_1
|
|
:return: 基金申购状态
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
url = "https://fund.eastmoney.com/Data/Fund_JJJZ_Data.aspx"
|
|
params = {
|
|
"t": "8",
|
|
"page": "1,50000",
|
|
"js": "reData",
|
|
"sort": "fcode,asc",
|
|
}
|
|
r = requests.get(url, params=params, headers=headers)
|
|
data_text = r.text
|
|
data_json = demjson.decode(data_text.strip("var reData="))
|
|
temp_df = pd.DataFrame(data_json["datas"])
|
|
temp_df.reset_index(inplace=True)
|
|
temp_df["index"] = temp_df.index + 1
|
|
temp_df.columns = [
|
|
"序号",
|
|
"基金代码",
|
|
"基金简称",
|
|
"基金类型",
|
|
"最新净值/万份收益",
|
|
"最新净值/万份收益-报告时间",
|
|
"申购状态",
|
|
"赎回状态",
|
|
"下一开放日",
|
|
"购买起点",
|
|
"日累计限定金额",
|
|
"-",
|
|
"-",
|
|
"手续费",
|
|
]
|
|
temp_df = temp_df[
|
|
[
|
|
"序号",
|
|
"基金代码",
|
|
"基金简称",
|
|
"基金类型",
|
|
"最新净值/万份收益",
|
|
"最新净值/万份收益-报告时间",
|
|
"申购状态",
|
|
"赎回状态",
|
|
"下一开放日",
|
|
"购买起点",
|
|
"日累计限定金额",
|
|
"手续费",
|
|
]
|
|
]
|
|
temp_df["下一开放日"] = pd.to_datetime(
|
|
temp_df["下一开放日"], errors="coerce"
|
|
).dt.date
|
|
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["手续费"] = temp_df["手续费"].str.strip("%")
|
|
temp_df["手续费"] = pd.to_numeric(temp_df["手续费"], errors="coerce")
|
|
return temp_df
|
|
|
|
|
|
def fund_name_em() -> pd.DataFrame:
|
|
"""
|
|
东方财富网站-天天基金网-基金数据-所有基金的名称和类型
|
|
https://fund.eastmoney.com/manager/default.html#dt14;mcreturnjson;ftall;pn20;pi1;scabbname;stasc
|
|
:return: 所有基金的名称和类型
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
url = "https://fund.eastmoney.com/js/fundcode_search.js"
|
|
r = requests.get(url, headers=headers)
|
|
text_data = r.text
|
|
data_json = demjson.decode(text_data.strip("var r = ")[:-1])
|
|
temp_df = pd.DataFrame(data_json)
|
|
temp_df.columns = ["基金代码", "拼音缩写", "基金简称", "基金类型", "拼音全称"]
|
|
return temp_df
|
|
|
|
|
|
def fund_info_index_em(
|
|
symbol: str = "沪深指数", indicator: str = "被动指数型"
|
|
) -> pd.DataFrame:
|
|
"""
|
|
东方财富网站-天天基金网-基金数据-基金信息-指数型
|
|
https://fund.eastmoney.com/trade/zs.html
|
|
:param symbol: choice of {"全部", "沪深指数", "行业主题", "大盘指数", "中盘指数", "小盘指数", "股票指数", "债券指数"}
|
|
:type symbol: str
|
|
:param indicator: choice of {"全部", "被动指数型", "增强指数型"}
|
|
:type indicator: str
|
|
:return: 基金信息-指数型
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
symbol_map = {
|
|
"全部": "",
|
|
"沪深指数": "053",
|
|
"行业主题": "054",
|
|
"大盘指数": "01",
|
|
"中盘指数": "02",
|
|
"小盘指数": "03",
|
|
"股票指数": "050|001",
|
|
"债券指数": "050|003",
|
|
}
|
|
indicator_map = {
|
|
"全部": "",
|
|
"被动指数型": "051",
|
|
"增强指数型": "052",
|
|
}
|
|
url = "https://api.fund.eastmoney.com/FundTradeRank/GetRankList"
|
|
if symbol in {"股票指数", "债券指数"}:
|
|
params = {
|
|
"ft": "zs",
|
|
"sc": "1n",
|
|
"st": "desc",
|
|
"pi": "1",
|
|
"pn": "10000",
|
|
"cp": "",
|
|
"ct": "",
|
|
"cd": "",
|
|
"ms": "",
|
|
"fr": symbol_map[symbol].split("|")[0],
|
|
"plevel": "",
|
|
"fst": "",
|
|
"ftype": symbol_map[symbol].split("|")[1],
|
|
"fr1": indicator_map[indicator],
|
|
"fl": "0",
|
|
"isab": "1",
|
|
}
|
|
else:
|
|
params = {
|
|
"ft": "zs",
|
|
"sc": "1n",
|
|
"st": "desc",
|
|
"pi": "1",
|
|
"pn": "10000",
|
|
"cp": "",
|
|
"ct": "",
|
|
"cd": "",
|
|
"ms": "",
|
|
"fr": symbol_map[symbol].split("|")[0],
|
|
"plevel": "",
|
|
"fst": "",
|
|
"ftype": "",
|
|
"fr1": indicator_map[indicator],
|
|
"fl": "0",
|
|
"isab": "1",
|
|
}
|
|
headers = {
|
|
"Accept": "*/*",
|
|
"Accept-Encoding": "gzip, deflate",
|
|
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
|
|
"Cache-Control": "no-cache",
|
|
"Host": "api.fund.eastmoney.com",
|
|
"Pragma": "no-cache",
|
|
"Proxy-Connection": "keep-alive",
|
|
"Referer": "https://fund.eastmoney.com/",
|
|
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
"Chrome/103.0.0.0 Safari/537.36",
|
|
}
|
|
r = requests.get(url, params=params, headers=headers)
|
|
data_json = r.json()
|
|
data_json = json.loads(data_json["Data"])
|
|
temp_df = pd.DataFrame([item.split("|") for item in data_json["datas"]])
|
|
temp_df.columns = [
|
|
"基金代码",
|
|
"基金名称",
|
|
"-",
|
|
"日期",
|
|
"单位净值",
|
|
"日增长率",
|
|
"近1周",
|
|
"近1月",
|
|
"近3月",
|
|
"近6月",
|
|
"近1年",
|
|
"近2年",
|
|
"近3年",
|
|
"今年来",
|
|
"成立来",
|
|
"-",
|
|
"-",
|
|
"-",
|
|
"手续费",
|
|
"-",
|
|
"-",
|
|
"-",
|
|
"-",
|
|
"-",
|
|
"起购金额",
|
|
"-",
|
|
"-",
|
|
"-",
|
|
"-",
|
|
]
|
|
temp_df = temp_df[
|
|
[
|
|
"基金代码",
|
|
"基金名称",
|
|
"单位净值",
|
|
"日期",
|
|
"日增长率",
|
|
"近1周",
|
|
"近1月",
|
|
"近3月",
|
|
"近6月",
|
|
"近1年",
|
|
"近2年",
|
|
"近3年",
|
|
"今年来",
|
|
"成立来",
|
|
"手续费",
|
|
"起购金额",
|
|
]
|
|
]
|
|
temp_df["跟踪标的"] = symbol
|
|
temp_df["跟踪方式"] = indicator
|
|
|
|
temp_df["单位净值"] = pd.to_numeric(temp_df["单位净值"], errors="coerce")
|
|
temp_df["日增长率"] = pd.to_numeric(temp_df["日增长率"], errors="coerce")
|
|
temp_df["近1周"] = pd.to_numeric(temp_df["近1周"], errors="coerce")
|
|
temp_df["近1月"] = pd.to_numeric(temp_df["近1月"], errors="coerce")
|
|
temp_df["近3月"] = pd.to_numeric(temp_df["近3月"], errors="coerce")
|
|
temp_df["近6月"] = pd.to_numeric(temp_df["近6月"], errors="coerce")
|
|
temp_df["近1年"] = pd.to_numeric(temp_df["近1年"], errors="coerce")
|
|
temp_df["近2年"] = pd.to_numeric(temp_df["近2年"], errors="coerce")
|
|
temp_df["近3年"] = pd.to_numeric(temp_df["近3年"], 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")
|
|
return temp_df
|
|
|
|
|
|
def fund_open_fund_daily_em() -> pd.DataFrame:
|
|
"""
|
|
东方财富网-天天基金网-基金数据-开放式基金净值
|
|
https://fund.eastmoney.com/fund.html#os_0;isall_0;ft_;pt_1
|
|
:return: 当前交易日的所有开放式基金净值数据
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
url = "https://fund.eastmoney.com/Data/Fund_JJJZ_Data.aspx"
|
|
params = {
|
|
"t": "1",
|
|
"lx": "1",
|
|
"letter": "",
|
|
"gsid": "",
|
|
"text": "",
|
|
"sort": "zdf,desc",
|
|
"page": "1,50000",
|
|
"dt": "1580914040623",
|
|
"atfc": "",
|
|
"onlySale": "0",
|
|
}
|
|
res = requests.get(url, params=params, headers=headers)
|
|
text_data = res.text
|
|
data_json = demjson.decode(text_data.strip("var db="))
|
|
temp_df = pd.DataFrame(data_json["datas"])
|
|
show_day = data_json["showday"]
|
|
temp_df.columns = [
|
|
"基金代码",
|
|
"基金简称",
|
|
"-",
|
|
f"{show_day[0]}-单位净值",
|
|
f"{show_day[0]}-累计净值",
|
|
f"{show_day[1]}-单位净值",
|
|
f"{show_day[1]}-累计净值",
|
|
"日增长值",
|
|
"日增长率",
|
|
"申购状态",
|
|
"赎回状态",
|
|
"-",
|
|
"-",
|
|
"-",
|
|
"-",
|
|
"-",
|
|
"-",
|
|
"手续费",
|
|
"-",
|
|
"-",
|
|
"-",
|
|
]
|
|
data_df = temp_df[
|
|
[
|
|
"基金代码",
|
|
"基金简称",
|
|
f"{show_day[0]}-单位净值",
|
|
f"{show_day[0]}-累计净值",
|
|
f"{show_day[1]}-单位净值",
|
|
f"{show_day[1]}-累计净值",
|
|
"日增长值",
|
|
"日增长率",
|
|
"申购状态",
|
|
"赎回状态",
|
|
"手续费",
|
|
]
|
|
]
|
|
return data_df
|
|
|
|
|
|
def fund_open_fund_info_em(
|
|
symbol: str = "710001", indicator: str = "单位净值走势", period: str = "成立来"
|
|
) -> pd.DataFrame:
|
|
"""
|
|
东方财富网-天天基金网-基金数据-开放式基金净值
|
|
https://fund.eastmoney.com/fund.html
|
|
:param symbol: 基金代码; 可以通过调用 ak.fund_open_fund_daily_em() 获取所有开放式基金代码
|
|
:type symbol: str
|
|
:param indicator: 需要获取的指标
|
|
:type indicator: str
|
|
:param period: "成立来"; choice of {"1月", "3月", "6月", "1年", "3年", "5年", "今年来", "成立来"}
|
|
:type period: str
|
|
:return: 指定基金指定指标的数据
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
from akshare.utils.cons import headers
|
|
|
|
url = f"https://fund.eastmoney.com/pingzhongdata/{symbol}.js" # 各类数据都在里面
|
|
r = requests.get(url, headers=headers)
|
|
data_text = r.text
|
|
|
|
js_code = py_mini_racer.MiniRacer()
|
|
js_code.eval(data_text)
|
|
|
|
# 单位净值走势
|
|
if indicator == "单位净值走势":
|
|
data_json = js_code.execute("Data_netWorthTrend")
|
|
temp_df = pd.DataFrame(data_json)
|
|
if temp_df.empty:
|
|
return pd.DataFrame()
|
|
temp_df["x"] = pd.to_datetime(temp_df["x"], unit="ms", utc=True).dt.tz_convert(
|
|
"Asia/Shanghai"
|
|
)
|
|
temp_df["x"] = temp_df["x"].dt.date
|
|
temp_df.columns = [
|
|
"净值日期",
|
|
"单位净值",
|
|
"日增长率",
|
|
"_",
|
|
]
|
|
temp_df = temp_df[
|
|
[
|
|
"净值日期",
|
|
"单位净值",
|
|
"日增长率",
|
|
]
|
|
]
|
|
temp_df["净值日期"] = pd.to_datetime(
|
|
temp_df["净值日期"], errors="coerce"
|
|
).dt.date
|
|
temp_df["单位净值"] = pd.to_numeric(temp_df["单位净值"], errors="coerce")
|
|
temp_df["日增长率"] = pd.to_numeric(temp_df["日增长率"], errors="coerce")
|
|
return temp_df
|
|
|
|
# 累计净值走势
|
|
if indicator == "累计净值走势":
|
|
data_json = js_code.execute("Data_ACWorthTrend")
|
|
temp_df = pd.DataFrame(data_json)
|
|
if temp_df.empty:
|
|
return pd.DataFrame()
|
|
temp_df.columns = ["x", "y"]
|
|
temp_df["x"] = pd.to_datetime(temp_df["x"], unit="ms", utc=True).dt.tz_convert(
|
|
"Asia/Shanghai"
|
|
)
|
|
temp_df["x"] = temp_df["x"].dt.date
|
|
temp_df.columns = [
|
|
"净值日期",
|
|
"累计净值",
|
|
]
|
|
temp_df = temp_df[
|
|
[
|
|
"净值日期",
|
|
"累计净值",
|
|
]
|
|
]
|
|
temp_df["净值日期"] = pd.to_datetime(
|
|
temp_df["净值日期"], errors="coerce"
|
|
).dt.date
|
|
temp_df["累计净值"] = pd.to_numeric(temp_df["累计净值"], errors="coerce")
|
|
return temp_df
|
|
|
|
# 每万份收益
|
|
if indicator == "每万份收益":
|
|
data_json = js_code.execute("Data_millionCopiesIncome")
|
|
temp_df = pd.DataFrame(data_json)
|
|
if temp_df.empty:
|
|
return pd.DataFrame()
|
|
temp_df.columns = ["x", "y"]
|
|
temp_df["x"] = pd.to_datetime(temp_df["x"], unit="ms", utc=True).dt.tz_convert(
|
|
"Asia/Shanghai"
|
|
)
|
|
temp_df["x"] = temp_df["x"].dt.date
|
|
temp_df.columns = [
|
|
"净值日期",
|
|
"每万份收益",
|
|
]
|
|
temp_df = temp_df[
|
|
[
|
|
"净值日期",
|
|
"每万份收益",
|
|
]
|
|
]
|
|
temp_df["净值日期"] = pd.to_datetime(
|
|
temp_df["净值日期"], errors="coerce"
|
|
).dt.date
|
|
temp_df["每万份收益"] = pd.to_numeric(temp_df["每万份收益"], errors="coerce")
|
|
return temp_df
|
|
|
|
# 7日年化收益率
|
|
if indicator == "7日年化收益率":
|
|
data_json = js_code.execute("Data_sevenDaysYearIncome")
|
|
temp_df = pd.DataFrame(data_json)
|
|
if temp_df.empty:
|
|
return pd.DataFrame()
|
|
temp_df.columns = ["x", "y"]
|
|
temp_df["x"] = pd.to_datetime(temp_df["x"], unit="ms", utc=True).dt.tz_convert(
|
|
"Asia/Shanghai"
|
|
)
|
|
temp_df["x"] = temp_df["x"].dt.date
|
|
temp_df.columns = [
|
|
"净值日期",
|
|
"7日年化收益率",
|
|
]
|
|
temp_df = temp_df[
|
|
[
|
|
"净值日期",
|
|
"7日年化收益率",
|
|
]
|
|
]
|
|
temp_df["净值日期"] = pd.to_datetime(
|
|
temp_df["净值日期"], errors="coerce"
|
|
).dt.date
|
|
temp_df["7日年化收益率"] = pd.to_numeric(
|
|
temp_df["7日年化收益率"], errors="coerce"
|
|
)
|
|
return temp_df
|
|
|
|
# 累计收益率走势
|
|
if indicator == "累计收益率走势":
|
|
url = "https://api.fund.eastmoney.com/pinzhong/LJSYLZS"
|
|
headers = {"Referer": "https://fund.eastmoney.com/"}
|
|
period_map = {
|
|
"1月": "m",
|
|
"3月": "q",
|
|
"6月": "hy",
|
|
"1年": "y",
|
|
"3年": "try",
|
|
"5年": "fiy",
|
|
"今年来": "sy",
|
|
"成立来": "se",
|
|
}
|
|
params = {
|
|
"fundCode": symbol,
|
|
"indexcode": "000300",
|
|
"type": period_map[period],
|
|
}
|
|
r = requests.get(url, params=params, headers=headers)
|
|
data_json = r.json()
|
|
temp_df = pd.DataFrame(data_json["Data"][0]["data"])
|
|
temp_df.columns = ["日期", "累计收益率"]
|
|
temp_df["日期"] = pd.to_datetime(
|
|
temp_df["日期"], unit="ms", utc=True
|
|
).dt.tz_convert("Asia/Shanghai")
|
|
temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
|
|
temp_df["累计收益率"] = pd.to_numeric(temp_df["累计收益率"], errors="coerce")
|
|
return temp_df
|
|
|
|
# 同类排名走势
|
|
if indicator == "同类排名走势":
|
|
data_json = js_code.execute("Data_rateInSimilarType")
|
|
temp_df = pd.DataFrame(data_json)
|
|
temp_df["x"] = pd.to_datetime(temp_df["x"], unit="ms", utc=True).dt.tz_convert(
|
|
"Asia/Shanghai"
|
|
)
|
|
temp_df["x"] = temp_df["x"].dt.date
|
|
temp_df.columns = [
|
|
"报告日期",
|
|
"同类型排名-每日近三月排名",
|
|
"总排名-每日近三月排名",
|
|
]
|
|
temp_df = temp_df[
|
|
[
|
|
"报告日期",
|
|
"同类型排名-每日近三月排名",
|
|
"总排名-每日近三月排名",
|
|
]
|
|
]
|
|
temp_df["报告日期"] = pd.to_datetime(
|
|
temp_df["报告日期"], errors="coerce"
|
|
).dt.date
|
|
temp_df["同类型排名-每日近三月排名"] = pd.to_numeric(
|
|
temp_df["同类型排名-每日近三月排名"], errors="coerce"
|
|
)
|
|
temp_df["总排名-每日近三月排名"] = pd.to_numeric(
|
|
temp_df["总排名-每日近三月排名"], errors="coerce"
|
|
)
|
|
return temp_df
|
|
|
|
# 同类排名百分比
|
|
if indicator == "同类排名百分比":
|
|
data_json = js_code.execute("Data_rateInSimilarPersent")
|
|
temp_df = pd.DataFrame(data_json)
|
|
temp_df.columns = ["x", "y"]
|
|
temp_df["x"] = pd.to_datetime(temp_df["x"], unit="ms", utc=True).dt.tz_convert(
|
|
"Asia/Shanghai"
|
|
)
|
|
temp_df["x"] = temp_df["x"].dt.date
|
|
temp_df.columns = [
|
|
"报告日期",
|
|
"同类型排名-每日近3月收益排名百分比",
|
|
]
|
|
temp_df = temp_df[
|
|
[
|
|
"报告日期",
|
|
"同类型排名-每日近3月收益排名百分比",
|
|
]
|
|
]
|
|
temp_df["报告日期"] = pd.to_datetime(
|
|
temp_df["报告日期"], errors="coerce"
|
|
).dt.date
|
|
temp_df["同类型排名-每日近3月收益排名百分比"] = pd.to_numeric(
|
|
temp_df["同类型排名-每日近3月收益排名百分比"], errors="coerce"
|
|
)
|
|
return temp_df
|
|
|
|
# 分红送配详情
|
|
if indicator == "分红送配详情":
|
|
url = f"https://fundf10.eastmoney.com/fhsp_{symbol}.html"
|
|
r = requests.get(url, headers=headers)
|
|
table_num = len(pd.read_html(StringIO(r.text)))
|
|
if table_num == 3:
|
|
temp_df = pd.read_html(StringIO(r.text))[1]
|
|
else:
|
|
temp_df = pd.read_html(StringIO(r.text))[0]
|
|
if temp_df.iloc[0, 1] == "暂无分红信息!":
|
|
return pd.DataFrame()
|
|
else:
|
|
return temp_df
|
|
|
|
# 拆分详情
|
|
if indicator == "拆分详情":
|
|
url = f"https://fundf10.eastmoney.com/fhsp_{symbol}.html"
|
|
r = requests.get(url, headers=headers)
|
|
table_num = len(pd.read_html(StringIO(r.text)))
|
|
if table_num == 3:
|
|
temp_df = pd.read_html(StringIO(r.text))[2]
|
|
else:
|
|
temp_df = pd.read_html(StringIO(r.text))[1]
|
|
if temp_df.iloc[0, 1] == "暂无拆分信息!":
|
|
return pd.DataFrame()
|
|
else:
|
|
return temp_df
|
|
return pd.DataFrame()
|
|
|
|
|
|
def fund_money_fund_daily_em() -> pd.DataFrame:
|
|
"""
|
|
东方财富网-天天基金网-基金数据-货币型基金收益
|
|
https://fund.eastmoney.com/HBJJ_pjsyl.html
|
|
:return: 当前交易日的所有货币型基金收益数据
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
url = "https://fund.eastmoney.com/HBJJ_pjsyl.html"
|
|
r = requests.get(url, headers=headers)
|
|
r.encoding = "gb2312"
|
|
show_day = pd.read_html(StringIO(r.text))[1].iloc[0, 5:11].tolist()
|
|
temp_df = pd.read_html(StringIO(r.text))[1].iloc[1:, 2:]
|
|
temp_df_columns = temp_df.iloc[0, :].tolist()[1:]
|
|
temp_df = temp_df.iloc[1:, 1:]
|
|
temp_df.columns = temp_df_columns
|
|
temp_df["基金简称"] = temp_df["基金简称"].str.strip("基金吧档案")
|
|
temp_df.columns = [
|
|
"基金代码",
|
|
"基金简称",
|
|
f"{show_day[0]}-万份收益",
|
|
f"{show_day[1]}-7日年化%",
|
|
f"{show_day[2]}-单位净值",
|
|
f"{show_day[3]}-万份收益",
|
|
f"{show_day[4]}-7日年化%",
|
|
f"{show_day[5]}-单位净值",
|
|
"日涨幅",
|
|
"成立日期",
|
|
"基金经理",
|
|
"手续费",
|
|
"可购全部",
|
|
]
|
|
return temp_df
|
|
|
|
|
|
def fund_money_fund_info_em(symbol: str = "000009") -> pd.DataFrame:
|
|
"""
|
|
东方财富网-天天基金网-基金数据-货币型基金收益-历史净值数据
|
|
https://fundf10.eastmoney.com/jjjz_004186.html
|
|
:param symbol: 货币型基金代码, 可以通过 fund_money_fund_daily_em 来获取
|
|
:type symbol: str
|
|
:return: 东方财富网站-天天基金网-基金数据-货币型基金收益-历史净值数据
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
url = "https://api.fund.eastmoney.com/f10/lsjz"
|
|
headers = {
|
|
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
"Chrome/80.0.3987.149 Safari/537.36",
|
|
"Referer": f"https://fundf10.eastmoney.com/jjjz_{symbol}.html",
|
|
"Host": "api.fund.eastmoney.com",
|
|
}
|
|
params = {
|
|
"fundCode": symbol,
|
|
"pageIndex": "1",
|
|
"pageSize": "20",
|
|
"startDate": "",
|
|
"endDate": "",
|
|
"_": round(time.time() * 1000),
|
|
}
|
|
r = requests.get(url, params=params, headers=headers)
|
|
data_json = r.json()
|
|
total_page = math.ceil(int(data_json["TotalCount"]) / 20)
|
|
tqdm = get_tqdm()
|
|
big_list = []
|
|
for page in tqdm(range(1, total_page + 1), leave=False):
|
|
params.update({"pageIndex": page})
|
|
r = requests.get(url, params=params, headers=headers)
|
|
data_json = r.json()
|
|
temp_df = pd.DataFrame(data_json["Data"]["LSJZList"])
|
|
big_list.append(temp_df)
|
|
big_df = pd.concat(big_list, ignore_index=True)
|
|
big_df.columns = [
|
|
"净值日期",
|
|
"每万份收益",
|
|
"7日年化收益率",
|
|
"_",
|
|
"_",
|
|
"_",
|
|
"_",
|
|
"申购状态",
|
|
"赎回状态",
|
|
"_",
|
|
"_",
|
|
"_",
|
|
"_",
|
|
]
|
|
big_df.sort_values(by=["净值日期"], inplace=True, ignore_index=True)
|
|
big_df = big_df[["净值日期", "每万份收益", "7日年化收益率", "申购状态", "赎回状态"]]
|
|
big_df["净值日期"] = pd.to_datetime(big_df["净值日期"], errors="coerce").dt.date
|
|
big_df["每万份收益"] = pd.to_numeric(big_df["每万份收益"], errors="coerce")
|
|
big_df["7日年化收益率"] = pd.to_numeric(big_df["7日年化收益率"], errors="coerce")
|
|
return big_df
|
|
|
|
|
|
def fund_financial_fund_daily_em() -> pd.DataFrame:
|
|
"""
|
|
东方财富网站-天天基金网-基金数据-理财型基金收益
|
|
# 该接口暂无数据
|
|
https://fund.eastmoney.com/lcjj.html#1_1__0__ljjz,desc_1_os1
|
|
:return: 当前交易日的所有理财型基金收益
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
url = "https://api.fund.eastmoney.com/FundNetValue/GetLCJJJZ"
|
|
headers = {
|
|
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
"Chrome/80.0.3987.149 Safari/537.36",
|
|
"Referer": "https://fund.eastmoney.com/lcjj.html",
|
|
}
|
|
params = {
|
|
"letter": "",
|
|
"jjgsid": "0",
|
|
"searchtext": "",
|
|
"sort": "ljjz,desc",
|
|
"page": "1,100",
|
|
"AttentionCodes": "",
|
|
"cycle": "",
|
|
"OnlySale": "1",
|
|
}
|
|
r = requests.get(url, params=params, headers=headers)
|
|
data_json = r.json()
|
|
temp_df = pd.DataFrame(data_json["Data"]["List"])
|
|
if temp_df.empty:
|
|
return pd.DataFrame()
|
|
show_day = data_json["Data"]["showday"]
|
|
data_df = temp_df[
|
|
[
|
|
"Id",
|
|
"actualsyi",
|
|
"cycle",
|
|
"fcode",
|
|
"kfr",
|
|
"mui",
|
|
"shortname",
|
|
"syi",
|
|
"zrmui",
|
|
"zrsyi",
|
|
]
|
|
]
|
|
data_df.columns = [
|
|
"序号",
|
|
"上一期年化收益率",
|
|
"封闭期",
|
|
"基金代码",
|
|
"申购状态",
|
|
f"{show_day[0]}-万份收益",
|
|
"基金简称",
|
|
f"{show_day[0]}-7日年华",
|
|
f"{show_day[1]}-万份收益",
|
|
f"{show_day[1]}-7日年华",
|
|
]
|
|
data_df = data_df[
|
|
[
|
|
"序号",
|
|
"基金代码",
|
|
"基金简称",
|
|
"上一期年化收益率",
|
|
f"{show_day[0]}-万份收益",
|
|
f"{show_day[0]}-7日年华",
|
|
f"{show_day[1]}-万份收益",
|
|
f"{show_day[1]}-7日年华",
|
|
"封闭期",
|
|
"申购状态",
|
|
]
|
|
]
|
|
return data_df
|
|
|
|
|
|
def fund_financial_fund_info_em(symbol: str = "000134") -> pd.DataFrame:
|
|
"""
|
|
东方财富网站-天天基金网-基金数据-理财型基金收益-历史净值明细
|
|
https://fundf10.eastmoney.com/jjjz_000791.html
|
|
:param symbol: 理财型基金代码, 可以通过 ak.fund_financial_fund_daily_em() 来获取
|
|
:type symbol: str
|
|
:return: 东方财富网站-天天基金网-基金数据-理财型基金收益-历史净值明细
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
url = "https://api.fund.eastmoney.com/f10/lsjz"
|
|
params = {
|
|
"fundCode": symbol,
|
|
"pageIndex": "1",
|
|
"pageSize": "10000",
|
|
"startDate": "",
|
|
"endDate": "",
|
|
"_": round(time.time() * 1000),
|
|
}
|
|
r = requests.get(url, params=params)
|
|
data_json = r.json()
|
|
temp_df = pd.DataFrame(data_json["Data"]["LSJZList"])
|
|
temp_df.columns = [
|
|
"净值日期",
|
|
"单位净值",
|
|
"累计净值",
|
|
"_",
|
|
"_",
|
|
"_",
|
|
"日增长率",
|
|
"申购状态",
|
|
"赎回状态",
|
|
"_",
|
|
"_",
|
|
"_",
|
|
"分红送配",
|
|
]
|
|
temp_df = temp_df[
|
|
[
|
|
"净值日期",
|
|
"单位净值",
|
|
"累计净值",
|
|
"日增长率",
|
|
"申购状态",
|
|
"赎回状态",
|
|
"分红送配",
|
|
]
|
|
]
|
|
temp_df.sort_values(["净值日期"], inplace=True, ignore_index=True)
|
|
temp_df["净值日期"] = pd.to_datetime(temp_df["净值日期"], errors="coerce").dt.date
|
|
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")
|
|
return temp_df
|
|
|
|
|
|
def fund_graded_fund_daily_em() -> pd.DataFrame:
|
|
"""
|
|
东方财富网站-天天基金网-基金数据-分级基金净值
|
|
https://fund.eastmoney.com/fjjj.html#1_1__0__zdf,desc_1
|
|
:return: 当前交易日的所有分级基金净值
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
url = "https://fund.eastmoney.com/Data/Fund_JJJZ_Data.aspx"
|
|
headers = {
|
|
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
"Chrome/80.0.3987.149 Safari/537.36",
|
|
"Referer": "https://fund.eastmoney.com/fjjj.html",
|
|
}
|
|
params = {
|
|
"t": "1",
|
|
"lx": "9",
|
|
"letter": "",
|
|
"gsid": "0",
|
|
"text": "",
|
|
"sort": "zdf,desc",
|
|
"page": "1,10000",
|
|
"dt": "1580914040623",
|
|
"atfc": "",
|
|
}
|
|
res = requests.get(url, params=params, headers=headers)
|
|
text_data = res.text
|
|
data_json = demjson.decode(text_data.strip("var db="))
|
|
temp_df = pd.DataFrame(data_json["datas"])
|
|
show_day = data_json["showday"]
|
|
temp_df.columns = [
|
|
"基金代码",
|
|
"基金简称",
|
|
"-",
|
|
f"{show_day[0]}-单位净值",
|
|
f"{show_day[0]}-累计净值",
|
|
f"{show_day[1]}--单位净值",
|
|
f"{show_day[1]}--累计净值",
|
|
"日增长值",
|
|
"日增长率",
|
|
"市价",
|
|
"折价率",
|
|
"-",
|
|
"-",
|
|
"-",
|
|
"-",
|
|
"-",
|
|
"-",
|
|
"-",
|
|
"-",
|
|
"手续费",
|
|
"-",
|
|
]
|
|
data_df = temp_df[
|
|
[
|
|
"基金代码",
|
|
"基金简称",
|
|
f"{show_day[0]}-单位净值",
|
|
f"{show_day[0]}-累计净值",
|
|
f"{show_day[1]}--单位净值",
|
|
f"{show_day[1]}--累计净值",
|
|
"日增长值",
|
|
"日增长率",
|
|
"市价",
|
|
"折价率",
|
|
"手续费",
|
|
]
|
|
]
|
|
return data_df
|
|
|
|
|
|
def fund_graded_fund_info_em(symbol: str = "150232") -> pd.DataFrame:
|
|
"""
|
|
东方财富网站-天天基金网-基金数据-分级基金净值-历史净值明细
|
|
https://fundf10.eastmoney.com/jjjz_150232.html
|
|
:param symbol: 分级基金代码, 可以通过 ak.fund_money_fund_daily_em() 来获取
|
|
:type symbol: str
|
|
:return: 东方财富网站-天天基金网-基金数据-分级基金净值-历史净值明细
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
url = "https://api.fund.eastmoney.com/f10/lsjz"
|
|
headers = {
|
|
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
"Chrome/80.0.3987.149 Safari/537.36",
|
|
"Referer": f"https://fundf10.eastmoney.com/jjjz_{symbol}.html",
|
|
}
|
|
params = {
|
|
"fundCode": symbol,
|
|
"pageIndex": "1",
|
|
"pageSize": "20",
|
|
"startDate": "",
|
|
"endDate": "",
|
|
"_": round(time.time() * 1000),
|
|
}
|
|
r = requests.get(url, params=params, headers=headers)
|
|
data_json = r.json()
|
|
total_page = math.ceil(int(data_json["TotalCount"]) / 20)
|
|
tqdm = get_tqdm()
|
|
big_list = []
|
|
for page in tqdm(range(1, total_page + 1), leave=False):
|
|
params.update({"pageIndex": page})
|
|
r = requests.get(url, params=params, headers=headers)
|
|
data_json = r.json()
|
|
temp_df = pd.DataFrame(data_json["Data"]["LSJZList"])
|
|
big_list.append(temp_df)
|
|
big_df = pd.concat(big_list, ignore_index=True)
|
|
big_df.columns = [
|
|
"净值日期",
|
|
"单位净值",
|
|
"累计净值",
|
|
"_",
|
|
"_",
|
|
"_",
|
|
"日增长率",
|
|
"申购状态",
|
|
"赎回状态",
|
|
"_",
|
|
"_",
|
|
"_",
|
|
"_",
|
|
]
|
|
big_df.sort_values(by=["净值日期"], inplace=True, ignore_index=True)
|
|
big_df = big_df[
|
|
["净值日期", "单位净值", "累计净值", "日增长率", "申购状态", "赎回状态"]
|
|
]
|
|
big_df["净值日期"] = pd.to_datetime(big_df["净值日期"], errors="coerce").dt.date
|
|
big_df["单位净值"] = pd.to_numeric(big_df["单位净值"], errors="coerce")
|
|
big_df["累计净值"] = pd.to_numeric(big_df["累计净值"], errors="coerce")
|
|
big_df["日增长率"] = pd.to_numeric(big_df["日增长率"], errors="coerce")
|
|
return big_df
|
|
|
|
|
|
def fund_etf_fund_daily_em() -> pd.DataFrame:
|
|
"""
|
|
东方财富网-天天基金网-基金数据-场内交易基金
|
|
https://fund.eastmoney.com/cnjy_dwjz.html
|
|
:return: 当前交易日的所有场内交易基金数据
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
url = "https://fund.eastmoney.com/cnjy_dwjz.html"
|
|
r = requests.get(url, headers=headers)
|
|
r.encoding = "gb2312"
|
|
show_day = pd.read_html(StringIO(r.text))[1].iloc[0, 6:10].tolist()
|
|
temp_df = pd.read_html(StringIO(r.text))[1].iloc[1:, 2:]
|
|
temp_df_columns = temp_df.iloc[0, :].tolist()[1:]
|
|
temp_df = temp_df.iloc[1:, 1:]
|
|
temp_df.columns = temp_df_columns
|
|
temp_df["基金简称"] = temp_df["基金简称"].str.replace("行情吧档案", "")
|
|
temp_df.reset_index(inplace=True, drop=True)
|
|
temp_df.columns = [
|
|
"基金代码",
|
|
"基金简称",
|
|
"类型",
|
|
f"{show_day[0]}-单位净值",
|
|
f"{show_day[0]}-累计净值",
|
|
f"{show_day[2]}-单位净值",
|
|
f"{show_day[2]}-累计净值",
|
|
"增长值",
|
|
"增长率",
|
|
"市价",
|
|
"折价率",
|
|
]
|
|
return temp_df
|
|
|
|
|
|
def fund_etf_fund_info_em(
|
|
fund: str = "511280",
|
|
start_date: str = "20000101",
|
|
end_date: str = "20500101",
|
|
) -> pd.DataFrame:
|
|
"""
|
|
东方财富网站-天天基金网-基金数据-场内交易基金-历史净值明细
|
|
https://fundf10.eastmoney.com/jjjz_511280.html
|
|
:param fund: 场内交易基金代码, 可以通过 fund_etf_fund_daily_em 来获取
|
|
:type fund: str
|
|
:param start_date: 开始统计时间
|
|
:type start_date: str
|
|
:param end_date: 结束统计时间
|
|
:type end_date: str
|
|
:return: 东方财富网站-天天基金网-基金数据-场内交易基金-历史净值明细
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
url = "https://api.fund.eastmoney.com/f10/lsjz"
|
|
headers = {
|
|
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
"Chrome/80.0.3987.149 Safari/537.36",
|
|
"Referer": f"https://fundf10.eastmoney.com/jjjz_{fund}.html",
|
|
}
|
|
params = {
|
|
"fundCode": fund,
|
|
"pageIndex": "1",
|
|
"pageSize": "20",
|
|
"startDate": "-".join([start_date[:4], start_date[4:6], start_date[6:]]),
|
|
"endDate": "-".join([end_date[:4], end_date[4:6], end_date[6:]]),
|
|
"_": round(time.time() * 1000),
|
|
}
|
|
r = requests.get(url, params=params, headers=headers)
|
|
data_json = r.json()
|
|
total_page = math.ceil(data_json["TotalCount"] / 20)
|
|
df_list = []
|
|
tqdm = get_tqdm()
|
|
for page in tqdm(range(1, total_page + 1), leave=False):
|
|
params.update({"pageIndex": page})
|
|
r = requests.get(url, params=params, headers=headers)
|
|
data_json = r.json()
|
|
temp_df = pd.DataFrame(data_json["Data"]["LSJZList"])
|
|
df_list.append(temp_df)
|
|
big_df = pd.concat(df_list)
|
|
big_df.columns = [
|
|
"净值日期",
|
|
"单位净值",
|
|
"累计净值",
|
|
"_",
|
|
"_",
|
|
"_",
|
|
"日增长率",
|
|
"申购状态",
|
|
"赎回状态",
|
|
"_",
|
|
"_",
|
|
"_",
|
|
"_",
|
|
]
|
|
big_df = big_df[
|
|
["净值日期", "单位净值", "累计净值", "日增长率", "申购状态", "赎回状态"]
|
|
]
|
|
big_df["净值日期"] = pd.to_datetime(big_df["净值日期"], errors="coerce").dt.date
|
|
big_df["单位净值"] = pd.to_numeric(big_df["单位净值"], errors="coerce")
|
|
big_df["累计净值"] = pd.to_numeric(big_df["累计净值"], errors="coerce")
|
|
big_df["日增长率"] = pd.to_numeric(big_df["日增长率"], errors="coerce")
|
|
big_df.sort_values(["净值日期"], inplace=True, ignore_index=True)
|
|
return big_df
|
|
|
|
|
|
def fund_value_estimation_em(symbol: str = "全部") -> pd.DataFrame:
|
|
"""
|
|
东方财富网-数据中心-净值估算
|
|
https://fund.eastmoney.com/fundguzhi.html
|
|
:param symbol: choice of {'全部', '股票型', '混合型', '债券型', '指数型', 'QDII', 'ETF联接', 'LOF', '场内交易基金'}
|
|
:type symbol: str
|
|
:return: 近期净值估算数据
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
symbol_map = {
|
|
"全部": 1,
|
|
"股票型": 2,
|
|
"混合型": 3,
|
|
"债券型": 4,
|
|
"指数型": 5,
|
|
"QDII": 6,
|
|
"ETF联接": 7,
|
|
"LOF": 8,
|
|
"场内交易基金": 9,
|
|
}
|
|
url = "https://api.fund.eastmoney.com/FundGuZhi/GetFundGZList"
|
|
headers = {
|
|
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
"Chrome/81.0.4044.138 Safari/537.36",
|
|
"Referer": "https://fund.eastmoney.com/",
|
|
}
|
|
params = {
|
|
"type": symbol_map[symbol],
|
|
"sort": "3",
|
|
"orderType": "desc",
|
|
"canbuy": "0",
|
|
"pageIndex": "1",
|
|
"pageSize": "20000",
|
|
"_": int(time.time() * 1000),
|
|
}
|
|
r = requests.get(url, params=params, headers=headers)
|
|
json_data = r.json()
|
|
temp_df = pd.DataFrame(json_data["Data"]["list"])
|
|
value_day = json_data["Data"]["gzrq"]
|
|
cal_day = json_data["Data"]["gxrq"]
|
|
temp_df.columns = [
|
|
"基金代码",
|
|
"-",
|
|
"-",
|
|
"-",
|
|
"-",
|
|
"-",
|
|
"基金类型",
|
|
"-",
|
|
"-",
|
|
"-",
|
|
"-",
|
|
"估算日期",
|
|
"-",
|
|
"-",
|
|
"-",
|
|
"-",
|
|
"_",
|
|
"-",
|
|
"-",
|
|
"估算偏差",
|
|
f"{cal_day}-估算数据-估算值",
|
|
f"{cal_day}-估算数据-估算增长率",
|
|
f"{cal_day}-公布数据-日增长率",
|
|
f"{value_day}-单位净值",
|
|
f"{cal_day}-公布数据-单位净值",
|
|
"-",
|
|
"基金名称",
|
|
"-",
|
|
"-",
|
|
"-",
|
|
]
|
|
temp_df = temp_df[
|
|
[
|
|
"基金代码",
|
|
"基金名称",
|
|
f"{cal_day}-估算数据-估算值",
|
|
f"{cal_day}-估算数据-估算增长率",
|
|
f"{cal_day}-公布数据-单位净值",
|
|
f"{cal_day}-公布数据-日增长率",
|
|
"估算偏差",
|
|
f"{value_day}-单位净值",
|
|
]
|
|
]
|
|
temp_df.reset_index(inplace=True)
|
|
temp_df["index"] = range(1, len(temp_df) + 1)
|
|
temp_df.rename(columns={"index": "序号"}, inplace=True)
|
|
return temp_df
|
|
|
|
|
|
def fund_hk_fund_hist_em(
|
|
code: str = "1002200683", symbol: str = "历史净值明细"
|
|
) -> pd.DataFrame:
|
|
"""
|
|
东方财富网-天天基金网-基金数据-香港基金-历史净值明细(分红送配详情)
|
|
https://overseas.1234567.com.cn/f10/FundJz/968092#FHPS
|
|
:param code: 通过 ak.fund_em_hk_rank() 获取
|
|
:type code: str
|
|
:param symbol: choice of {"历史净值明细", "分红送配详情"}
|
|
:type symbol: str
|
|
:return: 香港基金-历史净值明细(分红送配详情)
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
url = "https://overseas.1234567.com.cn/overseasapi/OpenApiHander.ashx"
|
|
if symbol == "历史净值明细":
|
|
params = {
|
|
"api": "HKFDApi",
|
|
"m": "MethodJZ",
|
|
"hkfcode": f"{code}",
|
|
"action": "2",
|
|
"pageindex": "0",
|
|
"pagesize": "1000",
|
|
"date1": "",
|
|
"date2": "",
|
|
}
|
|
r = requests.get(url, params=params, headers=headers)
|
|
data_json = r.json()
|
|
temp_one_df = pd.DataFrame(data_json["Data"])
|
|
temp_one_df.columns = [
|
|
"_",
|
|
"_",
|
|
"_",
|
|
"净值日期",
|
|
"单位净值",
|
|
"_",
|
|
"日增长值",
|
|
"日增长率",
|
|
"_",
|
|
"单位",
|
|
"_",
|
|
]
|
|
temp_one_df = temp_one_df[
|
|
[
|
|
"净值日期",
|
|
"单位净值",
|
|
"日增长值",
|
|
"日增长率",
|
|
"单位",
|
|
]
|
|
]
|
|
else:
|
|
params = {
|
|
"api": "HKFDApi",
|
|
"m": "MethodJZ",
|
|
"hkfcode": f"{code}",
|
|
"action": "3",
|
|
"pageindex": "0",
|
|
"pagesize": "1000",
|
|
"date1": "",
|
|
"date2": "",
|
|
}
|
|
r = requests.get(url, params=params, headers=headers)
|
|
data_json = r.json()
|
|
temp_one_df = pd.DataFrame(data_json["Data"])
|
|
temp_one_df.columns = [
|
|
"_",
|
|
"_",
|
|
"_",
|
|
"_",
|
|
"_",
|
|
"年份",
|
|
"分红金额",
|
|
"除息日",
|
|
"权益登记日",
|
|
"分红发放日",
|
|
"_",
|
|
"单位",
|
|
"_",
|
|
"_",
|
|
"_",
|
|
]
|
|
temp_one_df = temp_one_df[
|
|
[
|
|
"年份",
|
|
"权益登记日",
|
|
"除息日",
|
|
"分红发放日",
|
|
"分红金额",
|
|
"单位",
|
|
]
|
|
]
|
|
return temp_one_df
|
|
|
|
|
|
if __name__ == "__main__":
|
|
fund_purchase_em_df = fund_purchase_em()
|
|
print(fund_purchase_em_df)
|
|
|
|
fund_name_em_df = fund_name_em()
|
|
print(fund_name_em_df)
|
|
|
|
fund_info_index_em_df = fund_info_index_em(symbol="债券指数", indicator="全部")
|
|
print(fund_info_index_em_df)
|
|
|
|
fund_open_fund_daily_em_df = fund_open_fund_daily_em()
|
|
print(fund_open_fund_daily_em_df)
|
|
time.sleep(3)
|
|
|
|
fund_open_fund_info_em_df = fund_open_fund_info_em(
|
|
symbol="710001", indicator="单位净值走势"
|
|
)
|
|
print(fund_open_fund_info_em_df)
|
|
time.sleep(3)
|
|
|
|
fund_open_fund_info_em_df = fund_open_fund_info_em(
|
|
symbol="502010", indicator="累计净值走势", period="成立来"
|
|
)
|
|
print(fund_open_fund_info_em_df)
|
|
time.sleep(3)
|
|
|
|
fund_open_fund_info_em_df = fund_open_fund_info_em(
|
|
symbol="710001", indicator="累计收益率走势", period="成立来"
|
|
)
|
|
print(fund_open_fund_info_em_df)
|
|
time.sleep(3)
|
|
|
|
fund_open_fund_info_em_df = fund_open_fund_info_em(
|
|
symbol="710001", indicator="同类排名走势"
|
|
)
|
|
print(fund_open_fund_info_em_df)
|
|
time.sleep(3)
|
|
|
|
fund_open_fund_info_em_df = fund_open_fund_info_em(
|
|
symbol="710001", indicator="同类排名百分比"
|
|
)
|
|
print(fund_open_fund_info_em_df)
|
|
time.sleep(3)
|
|
|
|
fund_open_fund_info_em_df = fund_open_fund_info_em(
|
|
symbol="014164", indicator="分红送配详情"
|
|
)
|
|
print(fund_open_fund_info_em_df)
|
|
time.sleep(3)
|
|
|
|
fund_open_fund_info_em_df = fund_open_fund_info_em(
|
|
symbol="005561", indicator="拆分详情"
|
|
)
|
|
print(fund_open_fund_info_em_df)
|
|
|
|
fund_money_fund_daily_em_df = fund_money_fund_daily_em()
|
|
print(fund_money_fund_daily_em_df)
|
|
|
|
fund_money_fund_info_em_df = fund_money_fund_info_em(symbol="000009")
|
|
print(fund_money_fund_info_em_df)
|
|
|
|
fund_financial_fund_daily_em_df = fund_financial_fund_daily_em()
|
|
print(fund_financial_fund_daily_em_df)
|
|
|
|
fund_financial_fund_info_em_df = fund_financial_fund_info_em(symbol="000134")
|
|
print(fund_financial_fund_info_em_df)
|
|
|
|
fund_graded_fund_daily_em_df = fund_graded_fund_daily_em()
|
|
print(fund_graded_fund_daily_em_df)
|
|
|
|
fund_graded_fund_info_em_df = fund_graded_fund_info_em(symbol="150232")
|
|
print(fund_graded_fund_info_em_df)
|
|
|
|
fund_etf_fund_daily_em_df = fund_etf_fund_daily_em()
|
|
print(fund_etf_fund_daily_em_df)
|
|
|
|
fund_etf_fund_info_em_df = fund_etf_fund_info_em(
|
|
fund="511280", start_date="20000101", end_date="20500101"
|
|
)
|
|
print(fund_etf_fund_info_em_df)
|
|
|
|
fund_value_estimation_em_df = fund_value_estimation_em(symbol="混合型")
|
|
print(fund_value_estimation_em_df)
|
|
|
|
fund_hk_fund_hist_em_df = fund_hk_fund_hist_em(
|
|
code="1002200683", symbol="历史净值明细"
|
|
)
|
|
print(fund_hk_fund_hist_em_df)
|
|
|
|
fund_hk_fund_hist_em_df = fund_hk_fund_hist_em(
|
|
code="1002200683", symbol="分红送配详情"
|
|
)
|
|
print(fund_hk_fund_hist_em_df)
|