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,直连正常
77 lines
2.7 KiB
Python
77 lines
2.7 KiB
Python
# -*- coding:utf-8 -*-
|
|
# !/usr/bin/env python
|
|
"""
|
|
Date: 2025/5/6 14:30
|
|
Desc: 主营构成
|
|
https://emweb.securities.eastmoney.com/PC_HSF10/BusinessAnalysis/Index?type=web&code=SH688041#
|
|
"""
|
|
|
|
import pandas as pd
|
|
import requests
|
|
|
|
|
|
def stock_zygc_em(symbol: str = "SH688041") -> pd.DataFrame:
|
|
"""
|
|
东方财富网-个股-主营构成
|
|
https://emweb.securities.eastmoney.com/PC_HSF10/BusinessAnalysis/Index?type=web&code=SH688041#
|
|
:param symbol: 带市场标识的股票代码
|
|
:type symbol: str
|
|
:return: 主营构成
|
|
:rtype: pandas.DataFrame
|
|
"""
|
|
url = "https://emweb.securities.eastmoney.com/PC_HSF10/BusinessAnalysis/PageAjax"
|
|
params = {"code": symbol}
|
|
r = requests.get(url, params=params)
|
|
data_json = r.json()
|
|
temp_df = pd.DataFrame(data_json["zygcfx"])
|
|
temp_df.rename(
|
|
columns={
|
|
"SECUCODE": "-",
|
|
"SECURITY_CODE": "股票代码",
|
|
"REPORT_DATE": "报告日期",
|
|
"MAINOP_TYPE": "分类类型",
|
|
"ITEM_NAME": "主营构成",
|
|
"MAIN_BUSINESS_INCOME": "主营收入",
|
|
"MBI_RATIO": "收入比例",
|
|
"MAIN_BUSINESS_COST": "主营成本",
|
|
"MBC_RATIO": "成本比例",
|
|
"MAIN_BUSINESS_RPOFIT": "主营利润",
|
|
"MBR_RATIO": "利润比例",
|
|
"GROSS_RPOFIT_RATIO": "毛利率",
|
|
"RANK": "-",
|
|
},
|
|
inplace=True,
|
|
)
|
|
temp_df = temp_df[
|
|
[
|
|
"股票代码",
|
|
"报告日期",
|
|
"分类类型",
|
|
"主营构成",
|
|
"主营收入",
|
|
"收入比例",
|
|
"主营成本",
|
|
"成本比例",
|
|
"主营利润",
|
|
"利润比例",
|
|
"毛利率",
|
|
]
|
|
]
|
|
temp_df["报告日期"] = pd.to_datetime(temp_df["报告日期"], errors="coerce").dt.date
|
|
temp_df["分类类型"] = temp_df["分类类型"].map(
|
|
{"1": "按行业分类", "2": "按产品分类", "3": "按地区分类"}
|
|
)
|
|
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["利润比例"] = pd.to_numeric(temp_df["利润比例"], errors="coerce")
|
|
temp_df["毛利率"] = pd.to_numeric(temp_df["毛利率"], errors="coerce")
|
|
return temp_df
|
|
|
|
|
|
if __name__ == "__main__":
|
|
stock_zygc_em_df = stock_zygc_em(symbol="SH688041")
|
|
print(stock_zygc_em_df)
|