diff --git a/akshare/__init__.py b/akshare/__init__.py index 89278864267..4ad63ceaddf 100644 --- a/akshare/__init__.py +++ b/akshare/__init__.py @@ -2480,9 +2480,10 @@ 1.10.63 fix: fix stock_esg_hz_sina interface 1.10.64 fix: fix stock_zh_b_spot interface 1.10.65 fix: fix macro_china_lpr interface +1.10.66 fix: fix stock_financial_report_sina interface """ -__version__ = "1.10.65" +__version__ = "1.10.66" __author__ = "AKFamily" import sys diff --git a/akshare/stock_fundamental/stock_finance.py b/akshare/stock_fundamental/stock_finance.py index 92e46a2d485..5dee27b774a 100644 --- a/akshare/stock_fundamental/stock_finance.py +++ b/akshare/stock_fundamental/stock_finance.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- coding:utf-8 -*- """ -Date: 2023/2/14 22:25 +Date: 2023/7/20 15:00 Desc: 股票基本面数据 新浪财经-财务报表-财务摘要 https://vip.stock.finance.sina.com.cn/corp/go.php/vFD_FinanceSummary/stockid/600004.phtml @@ -10,7 +10,6 @@ 新浪财经-发行与分配 https://money.finance.sina.com.cn/corp/go.php/vISSUE_ShareBonus/stockid/600004.phtml """ -from io import BytesIO from datetime import datetime import pandas as pd @@ -49,6 +48,7 @@ def stock_financial_report_sina( data_json = r.json() df_columns = [item['date_value'] for item in data_json["result"]["data"]["report_date"]] big_df = pd.DataFrame() + temp_df = pd.DataFrame() for date_str in df_columns: temp_df = pd.DataFrame( data_json["result"]["data"]["report_list"][date_str]["data"] @@ -86,6 +86,8 @@ def stock_financial_report_sina( big_df = big_df.T big_df.columns = temp_df["项目"] big_df = pd.concat([pd.DataFrame({"报告日": df_columns}), big_df], axis=1) + # 此处有 '国内票证结算' 和 '内部应收款'字段重复 + big_df = big_df.loc[:, ~big_df.columns.duplicated(keep='first')] return big_df @@ -283,13 +285,13 @@ def stock_history_dividend_detail( del temp_df["查看详细"] if temp_df.iloc[0, 0] == "暂时没有数据!": return pd.DataFrame() - temp_df["公告日期"] = pd.to_datetime(temp_df["公告日期"]).dt.date - temp_df["送股"] = pd.to_numeric(temp_df["送股"]) - temp_df["转增"] = pd.to_numeric(temp_df["转增"]) - temp_df["派息"] = pd.to_numeric(temp_df["派息"]) - temp_df["除权除息日"] = pd.to_datetime(temp_df["除权除息日"], errors="coerce").dt.date - temp_df["股权登记日"] = pd.to_datetime(temp_df["股权登记日"], errors="coerce").dt.date - temp_df["红股上市日"] = pd.to_datetime(temp_df["红股上市日"], errors="coerce").dt.date + 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["除权除息日"] = pd.to_datetime(temp_df["除权除息日"], format="%Y-%m-%d", errors="coerce").dt.date + temp_df["股权登记日"] = pd.to_datetime(temp_df["股权登记日"], format="%Y-%m-%d", errors="coerce").dt.date + temp_df["红股上市日"] = pd.to_datetime(temp_df["红股上市日"], format="%Y-%m-%d", errors="coerce").dt.date if date: url = "https://vip.stock.finance.sina.com.cn/corp/view/vISSUE_ShareBonusDetail.php" params = { @@ -324,16 +326,17 @@ def stock_history_dividend_detail( del temp_df["查看详细"] if temp_df.iloc[0, 0] == "暂时没有数据!": return pd.DataFrame() - temp_df["公告日期"] = pd.to_datetime(temp_df["公告日期"]).dt.date - temp_df["配股方案"] = pd.to_numeric(temp_df["配股方案"]) - temp_df["配股价格"] = pd.to_numeric(temp_df["配股价格"]) - temp_df["基准股本"] = pd.to_numeric(temp_df["基准股本"]) - temp_df["除权日"] = pd.to_datetime(temp_df["除权日"]).dt.date - temp_df["股权登记日"] = pd.to_datetime(temp_df["股权登记日"]).dt.date - temp_df["缴款起始日"] = pd.to_datetime(temp_df["缴款起始日"]).dt.date - temp_df["缴款终止日"] = pd.to_datetime(temp_df["缴款终止日"]).dt.date - temp_df["配股上市日"] = pd.to_datetime(temp_df["配股上市日"]).dt.date - temp_df["募集资金合计"] = pd.to_numeric(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["募集资金合计"] = pd.to_numeric(temp_df["募集资金合计"], errors="coerce") + temp_df["除权日"] = pd.to_datetime(temp_df["除权日"], format="%Y-%m-%d", errors="coerce").dt.date + temp_df["股权登记日"] = pd.to_datetime(temp_df["股权登记日"], format="%Y-%m-%d", errors="coerce").dt.date + temp_df["缴款起始日"] = pd.to_datetime(temp_df["缴款起始日"], format="%Y-%m-%d", errors="coerce").dt.date + temp_df["缴款终止日"] = pd.to_datetime(temp_df["缴款终止日"], format="%Y-%m-%d", errors="coerce").dt.date + temp_df["配股上市日"] = pd.to_datetime(temp_df["配股上市日"], format="%Y-%m-%d", errors="coerce").dt.date + if date: url = "https://vip.stock.finance.sina.com.cn/corp/view/vISSUE_ShareBonusDetail.php" params = { @@ -378,7 +381,7 @@ def stock_add_stock(stock: str = "688166") -> pd.DataFrame: r = requests.get(url) temp_df = pd.read_html(r.text)[12] if temp_df.at[0, 0] == "对不起,暂时没有相关增发记录": - return f"股票 {stock} 无增发记录" + raise f"股票 {stock} 无增发记录" big_df = pd.DataFrame() for i in range(int(len(temp_df.at[0, 1]) / 10)): temp_df = pd.read_html(r.text)[13 + i].iloc[:, 1] diff --git a/docs/changelog.md b/docs/changelog.md index 8b84ccaa2d0..4d7409bd141 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -63,6 +63,10 @@ ## 更新说明详情 +1.10.66 fix: fix stock_financial_report_sina interface + + 1. 修复 stock_financial_report_sina 接口 + 1.10.65 fix: fix macro_china_lpr interface 1. 修复 macro_china_lpr 接口 @@ -2674,6 +2678,8 @@ ## 版本更新说明 +1.10.66 fix: fix stock_financial_report_sina interface + 1.10.65 fix: fix macro_china_lpr interface 1.10.64 fix: fix stock_zh_b_spot interface diff --git a/docs/data/stock/stock.md b/docs/data/stock/stock.md index de3a548cfd7..851d7a2988f 100644 --- a/docs/data/stock/stock.md +++ b/docs/data/stock/stock.md @@ -9831,6 +9831,8 @@ print(stock_notice_report_df) 限量: 单次获取指定报表的所有年份数据的历史数据 +注意: 原始数据中有 '国内票证结算' 和 '内部应收款'字段重, 返回数据中已经剔除 + 输入参数 | 名称 | 类型 | 描述 | @@ -9860,18 +9862,19 @@ print(stock_financial_report_sina_df) 数据示例 ``` - 报告日 流动资产 货币资金 ... 币种 类型 更新日期 -0 20221231 NaN 17854931855.0 ... CNY 合并期末 2023-03-22T20:50:09 -1 20220930 NaN 17045567340.0 ... CNY 合并期末 2022-10-26T17:20:07 -2 20220630 NaN 17587197778.0 ... CNY 合并期末 2022-08-25T21:25:04 -3 20220331 NaN 12818371932.0 ... CNY 合并期末 2022-04-28T16:20:04 -4 20211231 NaN 14597590313.0 ... CNY 合并期末 2022-03-29T01:05:06 + 报告日 流动资产 货币资金 ... 币种 类型 更新日期 +0 20230331 NaN 15554422004.0 ... CNY 合并期末 2023-04-24T18:05:05 +1 20221231 NaN 17854931855.0 ... CNY 合并期末 2023-03-22T20:50:09 +2 20220930 NaN 17045567340.0 ... CNY 合并期末 2022-10-26T17:20:07 +3 20220630 NaN 17587197778.0 ... CNY 合并期末 2022-08-25T21:25:04 +4 20220331 NaN 12818371932.0 ... CNY 合并期末 2022-04-28T16:20:04 .. ... ... ... ... ... ... ... -95 19960630 NaN NaN ... CNY 合并期末 2020-03-13T15:29:48 -96 19951231 NaN 741738874.0 ... CNY 合并期末 2020-03-13T15:29:48 -97 19950630 NaN NaN ... CNY 合并期末 2020-03-13T15:29:48 -98 19941231 NaN 712428000.0 ... CNY 合并期末 2020-03-13T15:29:48 -99 19940630 NaN NaN ... CNY 合并期末 2020-03-13T15:29:48 +95 19961231 NaN 671405728.0 ... CNY 合并期末 2020-03-13T15:29:48 +96 19960630 NaN NaN ... CNY 合并期末 2020-03-13T15:29:48 +97 19951231 NaN 741738874.0 ... CNY 合并期末 2020-03-13T15:29:48 +98 19950630 NaN NaN ... CNY 合并期末 2020-03-13T15:29:48 +99 19941231 NaN 712428000.0 ... CNY 合并期末 2020-03-13T15:29:48 +[100 rows x 147 columns] ``` #### 财务报表-东财