akshare 1.16.21__py3-none-any.whl → 1.16.23__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
akshare/__init__.py CHANGED
@@ -3030,9 +3030,11 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
3030
3030
  1.16.19 fix: fix stock_profit_forecast_ths interface
3031
3031
  1.16.20 fix: fix stock_lhb_detail_em interface
3032
3032
  1.16.21 fix: fix stock_hk_index_daily_em interface
3033
+ 1.16.22 fix: fix fund_money_fund_info_em interface
3034
+ 1.16.23 fix: fix stock_board_industry_cons_em interface
3033
3035
  """
3034
3036
 
3035
- __version__ = "1.16.21"
3037
+ __version__ = "1.16.23"
3036
3038
  __author__ = "AKFamily"
3037
3039
 
3038
3040
  import sys
akshare/fund/fund_em.py CHANGED
@@ -558,12 +558,12 @@ def fund_money_fund_daily_em() -> pd.DataFrame:
558
558
  return temp_df
559
559
 
560
560
 
561
- def fund_money_fund_info_em(fund: str = "000009") -> pd.DataFrame:
561
+ def fund_money_fund_info_em(symbol: str = "000009") -> pd.DataFrame:
562
562
  """
563
563
  东方财富网-天天基金网-基金数据-货币型基金收益-历史净值数据
564
564
  https://fundf10.eastmoney.com/jjjz_004186.html
565
- :param fund: 货币型基金代码, 可以通过 fund_money_fund_daily_em 来获取
566
- :type fund: str
565
+ :param symbol: 货币型基金代码, 可以通过 fund_money_fund_daily_em 来获取
566
+ :type symbol: str
567
567
  :return: 东方财富网站-天天基金网-基金数据-货币型基金收益-历史净值数据
568
568
  :rtype: pandas.DataFrame
569
569
  """
@@ -571,22 +571,30 @@ def fund_money_fund_info_em(fund: str = "000009") -> pd.DataFrame:
571
571
  headers = {
572
572
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
573
573
  "Chrome/80.0.3987.149 Safari/537.36",
574
- "Referer": f"https://fundf10.eastmoney.com/jjjz_{fund}.html",
574
+ "Referer": f"https://fundf10.eastmoney.com/jjjz_{symbol}.html",
575
+ "Host": "api.fund.eastmoney.com",
575
576
  }
576
577
  params = {
577
- "callback": "jQuery18306461675574671744_1588245122574",
578
- "fundCode": fund,
578
+ "fundCode": symbol,
579
579
  "pageIndex": "1",
580
- "pageSize": "10000",
580
+ "pageSize": "20",
581
581
  "startDate": "",
582
582
  "endDate": "",
583
583
  "_": round(time.time() * 1000),
584
584
  }
585
585
  r = requests.get(url, params=params, headers=headers)
586
- text_data = r.text
587
- data_json = demjson.decode(text_data[text_data.find("{") : -1])
588
- temp_df = pd.DataFrame(data_json["Data"]["LSJZList"])
589
- temp_df.columns = [
586
+ data_json = r.json()
587
+ total_page = math.ceil(int(data_json["TotalCount"]) / 20)
588
+ tqdm = get_tqdm()
589
+ big_list = []
590
+ for page in tqdm(range(1, total_page + 1), leave=False):
591
+ params.update({"pageIndex": page})
592
+ r = requests.get(url, params=params, headers=headers)
593
+ data_json = r.json()
594
+ temp_df = pd.DataFrame(data_json["Data"]["LSJZList"])
595
+ big_list.append(temp_df)
596
+ big_df = pd.concat(big_list, ignore_index=True)
597
+ big_df.columns = [
590
598
  "净值日期",
591
599
  "每万份收益",
592
600
  "7日年化收益率",
@@ -601,10 +609,12 @@ def fund_money_fund_info_em(fund: str = "000009") -> pd.DataFrame:
601
609
  "_",
602
610
  "_",
603
611
  ]
604
- temp_df = temp_df[
605
- ["净值日期", "每万份收益", "7日年化收益率", "申购状态", "赎回状态"]
606
- ]
607
- return temp_df
612
+ big_df.sort_values(by=["净值日期"], inplace=True, ignore_index=True)
613
+ big_df = big_df[["净值日期", "每万份收益", "7日年化收益率", "申购状态", "赎回状态"]]
614
+ big_df["净值日期"] = pd.to_datetime(big_df["净值日期"], errors="coerce").dt.date
615
+ big_df["每万份收益"] = pd.to_numeric(big_df["每万份收益"], errors="coerce")
616
+ big_df["7日年化收益率"] = pd.to_numeric(big_df["7日年化收益率"], errors="coerce")
617
+ return big_df
608
618
 
609
619
 
610
620
  def fund_financial_fund_daily_em() -> pd.DataFrame:
@@ -812,12 +822,12 @@ def fund_graded_fund_daily_em() -> pd.DataFrame:
812
822
  return data_df
813
823
 
814
824
 
815
- def fund_graded_fund_info_em(fund: str = "150232") -> pd.DataFrame:
825
+ def fund_graded_fund_info_em(symbol: str = "150232") -> pd.DataFrame:
816
826
  """
817
827
  东方财富网站-天天基金网-基金数据-分级基金净值-历史净值明细
818
828
  https://fundf10.eastmoney.com/jjjz_150232.html
819
- :param fund: 分级基金代码, 可以通过 fund_money_fund_daily_em 来获取
820
- :type fund: str
829
+ :param symbol: 分级基金代码, 可以通过 ak.fund_money_fund_daily_em() 来获取
830
+ :type symbol: str
821
831
  :return: 东方财富网站-天天基金网-基金数据-分级基金净值-历史净值明细
822
832
  :rtype: pandas.DataFrame
823
833
  """
@@ -825,22 +835,29 @@ def fund_graded_fund_info_em(fund: str = "150232") -> pd.DataFrame:
825
835
  headers = {
826
836
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
827
837
  "Chrome/80.0.3987.149 Safari/537.36",
828
- "Referer": f"https://fundf10.eastmoney.com/jjjz_{fund}.html",
838
+ "Referer": f"https://fundf10.eastmoney.com/jjjz_{symbol}.html",
829
839
  }
830
840
  params = {
831
- "callback": "jQuery18309549480723031107_1588250168187",
832
- "fundCode": fund,
841
+ "fundCode": symbol,
833
842
  "pageIndex": "1",
834
- "pageSize": "10000",
843
+ "pageSize": "20",
835
844
  "startDate": "",
836
845
  "endDate": "",
837
846
  "_": round(time.time() * 1000),
838
847
  }
839
848
  r = requests.get(url, params=params, headers=headers)
840
- text_data = r.text
841
- data_json = demjson.decode(text_data[text_data.find("{") : -1])
842
- temp_df = pd.DataFrame(data_json["Data"]["LSJZList"])
843
- temp_df.columns = [
849
+ data_json = r.json()
850
+ total_page = math.ceil(int(data_json["TotalCount"]) / 20)
851
+ tqdm = get_tqdm()
852
+ big_list = []
853
+ for page in tqdm(range(1, total_page + 1), leave=False):
854
+ params.update({"pageIndex": page})
855
+ r = requests.get(url, params=params, headers=headers)
856
+ data_json = r.json()
857
+ temp_df = pd.DataFrame(data_json["Data"]["LSJZList"])
858
+ big_list.append(temp_df)
859
+ big_df = pd.concat(big_list, ignore_index=True)
860
+ big_df.columns = [
844
861
  "净值日期",
845
862
  "单位净值",
846
863
  "累计净值",
@@ -855,10 +872,15 @@ def fund_graded_fund_info_em(fund: str = "150232") -> pd.DataFrame:
855
872
  "_",
856
873
  "_",
857
874
  ]
858
- temp_df = temp_df[
875
+ big_df.sort_values(by=["净值日期"], inplace=True, ignore_index=True)
876
+ big_df = big_df[
859
877
  ["净值日期", "单位净值", "累计净值", "日增长率", "申购状态", "赎回状态"]
860
878
  ]
861
- return temp_df
879
+ big_df["净值日期"] = pd.to_datetime(big_df["净值日期"], errors="coerce").dt.date
880
+ big_df["单位净值"] = pd.to_numeric(big_df["单位净值"], errors="coerce")
881
+ big_df["累计净值"] = pd.to_numeric(big_df["累计净值"], errors="coerce")
882
+ big_df["日增长率"] = pd.to_numeric(big_df["日增长率"], errors="coerce")
883
+ return big_df
862
884
 
863
885
 
864
886
  def fund_etf_fund_daily_em() -> pd.DataFrame:
@@ -1206,7 +1228,7 @@ if __name__ == "__main__":
1206
1228
  fund_money_fund_daily_em_df = fund_money_fund_daily_em()
1207
1229
  print(fund_money_fund_daily_em_df)
1208
1230
 
1209
- fund_money_fund_info_em_df = fund_money_fund_info_em(fund="162411")
1231
+ fund_money_fund_info_em_df = fund_money_fund_info_em(symbol="000009")
1210
1232
  print(fund_money_fund_info_em_df)
1211
1233
 
1212
1234
  fund_financial_fund_daily_em_df = fund_financial_fund_daily_em()
@@ -1218,7 +1240,7 @@ if __name__ == "__main__":
1218
1240
  fund_graded_fund_daily_em_df = fund_graded_fund_daily_em()
1219
1241
  print(fund_graded_fund_daily_em_df)
1220
1242
 
1221
- fund_graded_fund_info_em_df = fund_graded_fund_info_em(fund="150232")
1243
+ fund_graded_fund_info_em_df = fund_graded_fund_info_em(symbol="150232")
1222
1244
  print(fund_graded_fund_info_em_df)
1223
1245
 
1224
1246
  fund_etf_fund_daily_em_df = fund_etf_fund_daily_em()
@@ -436,15 +436,18 @@ def stock_board_concept_cons_em(symbol: str = "融资融券") -> pd.DataFrame:
436
436
  """
437
437
  东方财富-沪深板块-概念板块-板块成份
438
438
  https://quote.eastmoney.com/center/boardlist.html#boards-BK06551
439
- :param symbol: 板块名称
439
+ :param symbol: 板块名称或者板块代码
440
440
  :type symbol: str
441
441
  :return: 板块成份
442
442
  :rtype: pandas.DataFrame
443
443
  """
444
- stock_board_concept_em_map = __stock_board_concept_name_em()
445
- stock_board_code = stock_board_concept_em_map[
446
- stock_board_concept_em_map["板块名称"] == symbol
447
- ]["板块代码"].values[0]
444
+ if re.match(pattern=r"^BK\d+", string=symbol):
445
+ stock_board_code = symbol
446
+ else:
447
+ stock_board_concept_em_map = __stock_board_concept_name_em()
448
+ stock_board_code = stock_board_concept_em_map[
449
+ stock_board_concept_em_map["板块名称"] == symbol
450
+ ]["板块代码"].values[0]
448
451
  url = "https://29.push2.eastmoney.com/api/qt/clist/get"
449
452
  params = {
450
453
  "pn": "1",
@@ -557,5 +560,5 @@ if __name__ == "__main__":
557
560
  )
558
561
  print(stock_board_concept_hist_min_em_df)
559
562
 
560
- stock_board_concept_cons_em_df = stock_board_concept_cons_em(symbol="融资融券")
563
+ stock_board_concept_cons_em_df = stock_board_concept_cons_em(symbol="BK0655")
561
564
  print(stock_board_concept_cons_em_df)
@@ -475,15 +475,18 @@ def stock_board_industry_cons_em(symbol: str = "小金属") -> pd.DataFrame:
475
475
  """
476
476
  东方财富网-沪深板块-行业板块-板块成份
477
477
  https://data.eastmoney.com/bkzj/BK1027.html
478
- :param symbol: 板块名称
478
+ :param symbol: 板块名称或者板块代码
479
479
  :type symbol: str
480
480
  :return: 板块成份
481
481
  :rtype: pandas.DataFrame
482
482
  """
483
- stock_board_concept_em_map = __stock_board_industry_name_em()
484
- stock_board_code = stock_board_concept_em_map[
485
- stock_board_concept_em_map["板块名称"] == symbol
486
- ]["板块代码"].values[0]
483
+ if re.match(pattern=r"^BK\d+", string=symbol):
484
+ stock_board_code = symbol
485
+ else:
486
+ stock_board_concept_em_map = __stock_board_industry_name_em()
487
+ stock_board_code = stock_board_concept_em_map[
488
+ stock_board_concept_em_map["板块名称"] == symbol
489
+ ]["板块代码"].values[0]
487
490
  url = "https://29.push2.eastmoney.com/api/qt/clist/get"
488
491
  params = {
489
492
  "pn": "1",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: akshare
3
- Version: 1.16.21
3
+ Version: 1.16.23
4
4
  Summary: AKShare is an elegant and simple financial data interface library for Python, built for human beings!
5
5
  Home-page: https://github.com/akfamily/akshare
6
6
  Author: AKFamily
@@ -1,4 +1,4 @@
1
- akshare/__init__.py,sha256=tiMIfYtBTVrFyya-1RH7m43yu0n8YIp4GGVOKXDkuvw,188855
1
+ akshare/__init__.py,sha256=fIjaGSi9hSujgHZjCh2_iXjE-AlHbvlHvsVlFk5O3F4,188962
2
2
  akshare/datasets.py,sha256=rKuRNZrqi6IMsZ9nyvO3Rx02js0tH3zMLjz8HQNAoPQ,963
3
3
  akshare/exceptions.py,sha256=WEJjIhSmJ_xXNW6grwV4nufE_cfmmyuhmueVGiN1VAg,878
4
4
  akshare/request.py,sha256=HtFFf9MhfEibR-ETWe-1Tts6ELU4VKSqA-ghaXjegQM,4252
@@ -85,7 +85,7 @@ akshare/fund/__init__.py,sha256=RMTf1bT5EOE3ttWpn3hGu1LtUmsVxDoa0W7W0gXHOy8,81
85
85
  akshare/fund/fund_amac.py,sha256=Dml3EgpJhmVgkttb0OdaWN41ynOCIbJ0-1qAPDWF0oo,33800
86
86
  akshare/fund/fund_announcement.py,sha256=g5rcIC9vQ4HapZd0b7cDbFYzHu9V6bOKhwxRHVfmv8k,1848
87
87
  akshare/fund/fund_aum_em.py,sha256=dy1R1-0X48H8S-LPiuggNA5M-6MvQ08fnp5bytvCGPQ,3518
88
- akshare/fund/fund_em.py,sha256=nX0VA5JeiF-zRr1J10X-U9-pJj5KFDUAbovN1DWjvTo,40450
88
+ akshare/fund/fund_em.py,sha256=KbgTG_CIaEPykNh5xq-VRod-X0caIiPdNjx5Gv7CdTM,41785
89
89
  akshare/fund/fund_etf_em.py,sha256=xswdZoMN8mcDA_q-lN9lvOjKEPUzoPBjOU7Nn0grIHM,17393
90
90
  akshare/fund/fund_etf_sina.py,sha256=YV2KrqKMF_h8kgrywvWvRJx2oy62lhgizvHFk40E4Rk,7042
91
91
  akshare/fund/fund_etf_ths.py,sha256=vb_jy0h2-Kz2dNWUrwBYxPB0MAotv0KZgnFhE98ohSM,3432
@@ -231,8 +231,8 @@ akshare/stock/__init__.py,sha256=jSa9260d6aNZajaW68chI2mpPkDSXLOgi3eXrqo4MQ8,82
231
231
  akshare/stock/cons.py,sha256=0oyUW5Pu-iQ3qgh-TFemM_O5f1fAwVe-PsI4Qa8EYpQ,42956
232
232
  akshare/stock/stock_allotment_cninfo.py,sha256=OVjVdWp2XVRNbJvVgtgVVoBmPBJgBB4RyIIgA_9QHM8,6066
233
233
  akshare/stock/stock_ask_bid_em.py,sha256=nXQhYIpU4k7GUc7nthWC29zVS9GhYb9ppQTLD0gycF4,3438
234
- akshare/stock/stock_board_concept_em.py,sha256=JAyXNCuDf-IdkklRSz7D3rUwTwRM4aoLJgliQeivpSo,18431
235
- akshare/stock/stock_board_industry_em.py,sha256=aaMU78BLVxSTQ4Z55212DsfQDBerKD2OX3as1J9-w1s,19041
234
+ akshare/stock/stock_board_concept_em.py,sha256=-ZzrpRCpoiTdOy_yeLtkGEHP_wjKBmKiR5l_EfDhLzg,18554
235
+ akshare/stock/stock_board_industry_em.py,sha256=Whqgve1JrghcKuaC2F80Vt-z-9oSxQW66GIZwMM0QG8,19170
236
236
  akshare/stock/stock_cg_equity_mortgage.py,sha256=Pui5aWKKPwGuKjF_GNpejDzsMGNPrxiaJviLz3x2e9I,3426
237
237
  akshare/stock/stock_cg_guarantee.py,sha256=ts7qcQhhyN1PHB7Q4XlMn38HhfVvubOvky9RZfmUP94,3844
238
238
  akshare/stock/stock_cg_lawsuit.py,sha256=6Y92pPw0JgyrInteqHuU07G1jwmdX2wjaDtrJN8y6Hg,4129
@@ -381,8 +381,8 @@ akshare/utils/token_process.py,sha256=K4rGXjh_tgugbRcyOK2h2x0jP3PT65IIK7nxhUKhOe
381
381
  akshare/utils/tqdm.py,sha256=MuPNwcswkOGjwWQOMWXi9ZvQ_RmW4obCWRj2i7HM7FE,847
382
382
  tests/__init__.py,sha256=gNzhlO0UPjFq6Ieb38kaVIODXv4cTDByrdohAZnDYt4,82
383
383
  tests/test_func.py,sha256=j1MGYbZI2if2j_LY1S4FLsf4qfq4NwVqD5wmRlv5Log,832
384
- akshare-1.16.21.dist-info/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
385
- akshare-1.16.21.dist-info/METADATA,sha256=kJvN8GMQgMHjjkUJUT87Tuc0q0KwMLuPgXpWeYIbUyg,13847
386
- akshare-1.16.21.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
387
- akshare-1.16.21.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
388
- akshare-1.16.21.dist-info/RECORD,,
384
+ akshare-1.16.23.dist-info/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
385
+ akshare-1.16.23.dist-info/METADATA,sha256=o1ZoRRt8LbawY3-aB0W1-WP_PcQ8mrZC0SXvrAOngpg,13847
386
+ akshare-1.16.23.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
387
+ akshare-1.16.23.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
388
+ akshare-1.16.23.dist-info/RECORD,,