akshare 1.15.45__py3-none-any.whl → 1.15.47__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.

Potentially problematic release.


This version of akshare might be problematic. Click here for more details.

akshare/__init__.py CHANGED
@@ -2955,9 +2955,11 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
2955
2955
  1.15.43 fix: fix macro_china_urban_unemployment interface
2956
2956
  1.15.44 fix: fix index_detail_hist_adjust_cni interface
2957
2957
  1.15.45 fix: fix stock_jgdy_detail_em interface
2958
+ 1.15.46 fix: fix fund_etf_fund_info_em interface
2959
+ 1.15.47 fix: fix stock_individual_spot_xq interface
2958
2960
  """
2959
2961
 
2960
- __version__ = "1.15.45"
2962
+ __version__ = "1.15.47"
2961
2963
  __author__ = "AKFamily"
2962
2964
 
2963
2965
  import sys
akshare/fund/fund_em.py CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/10/1 18:10
4
+ Date: 2024/12/14 15:00
5
5
  Desc: 东方财富网站-天天基金网-基金数据-开放式基金净值
6
6
  https://fund.eastmoney.com/manager/default.html#dt14;mcreturnjson;ftall;pn20;pi1;scabbname;stasc
7
7
  1.基金经理基本数据, 建议包含:基金经理代码,基金经理姓名,从业起始日期,现任基金公司,管理资产总规模,上述数据可在"基金经理列表:
@@ -16,14 +16,17 @@ https://fundf10.eastmoney.com/jjjl_001810.html
16
16
  """
17
17
 
18
18
  import json
19
+ import math
19
20
  import time
20
21
  from io import StringIO
21
22
 
22
23
  import pandas as pd
24
+ import py_mini_racer
23
25
  import requests
24
26
 
25
27
  from akshare.utils import demjson
26
28
  from akshare.utils.cons import headers
29
+ from akshare.utils.tqdm import get_tqdm
27
30
 
28
31
 
29
32
  def fund_purchase_em() -> pd.DataFrame:
@@ -351,19 +354,12 @@ def fund_open_fund_info_em(
351
354
  r = requests.get(url, headers=headers)
352
355
  data_text = r.text
353
356
 
357
+ js_code = py_mini_racer.MiniRacer()
358
+ js_code.eval(data_text)
359
+
354
360
  # 单位净值走势
355
361
  if indicator == "单位净值走势":
356
- try:
357
- data_json = demjson.decode(
358
- data_text[
359
- data_text.find("Data_netWorthTrend") + 21 : data_text.find(
360
- "Data_ACWorthTrend"
361
- )
362
- - 15
363
- ]
364
- )
365
- except: # noqa: E722
366
- return pd.DataFrame()
362
+ data_json = js_code.execute("Data_netWorthTrend")
367
363
  temp_df = pd.DataFrame(data_json)
368
364
  if temp_df.empty:
369
365
  return pd.DataFrame()
@@ -393,17 +389,7 @@ def fund_open_fund_info_em(
393
389
 
394
390
  # 累计净值走势
395
391
  if indicator == "累计净值走势":
396
- try:
397
- data_json = demjson.decode(
398
- data_text[
399
- data_text.find("Data_ACWorthTrend") + 20 : data_text.find(
400
- "Data_grandTotal"
401
- )
402
- - 16
403
- ]
404
- )
405
- except: # noqa: E722
406
- return pd.DataFrame()
392
+ data_json = js_code.execute("Data_ACWorthTrend")
407
393
  temp_df = pd.DataFrame(data_json)
408
394
  if temp_df.empty:
409
395
  return pd.DataFrame()
@@ -461,14 +447,7 @@ def fund_open_fund_info_em(
461
447
 
462
448
  # 同类排名走势
463
449
  if indicator == "同类排名走势":
464
- data_json = demjson.decode(
465
- data_text[
466
- data_text.find("Data_rateInSimilarType") + 25 : data_text.find(
467
- "Data_rateInSimilarPersent"
468
- )
469
- - 16
470
- ]
471
- )
450
+ data_json = js_code.execute("Data_rateInSimilarType")
472
451
  temp_df = pd.DataFrame(data_json)
473
452
  temp_df["x"] = pd.to_datetime(temp_df["x"], unit="ms", utc=True).dt.tz_convert(
474
453
  "Asia/Shanghai"
@@ -499,14 +478,7 @@ def fund_open_fund_info_em(
499
478
 
500
479
  # 同类排名百分比
501
480
  if indicator == "同类排名百分比":
502
- data_json = demjson.decode(
503
- data_text[
504
- data_text.find("Data_rateInSimilarPersent") + 26 : data_text.find(
505
- "Data_fluctuationScale"
506
- )
507
- - 23
508
- ]
509
- )
481
+ data_json = js_code.execute("Data_rateInSimilarPersent")
510
482
  temp_df = pd.DataFrame(data_json)
511
483
  temp_df.columns = ["x", "y"]
512
484
  temp_df["x"] = pd.to_datetime(temp_df["x"], unit="ms", utc=True).dt.tz_convert(
@@ -948,15 +920,24 @@ def fund_etf_fund_info_em(
948
920
  params = {
949
921
  "fundCode": fund,
950
922
  "pageIndex": "1",
951
- "pageSize": "10000",
923
+ "pageSize": "20",
952
924
  "startDate": "-".join([start_date[:4], start_date[4:6], start_date[6:]]),
953
925
  "endDate": "-".join([end_date[:4], end_date[4:6], end_date[6:]]),
954
926
  "_": round(time.time() * 1000),
955
927
  }
956
928
  r = requests.get(url, params=params, headers=headers)
957
929
  data_json = r.json()
958
- temp_df = pd.DataFrame(data_json["Data"]["LSJZList"])
959
- temp_df.columns = [
930
+ total_page = math.ceil(data_json["TotalCount"] / 20)
931
+ df_list = []
932
+ tqdm = get_tqdm()
933
+ for page in tqdm(range(1, total_page + 1), leave=False):
934
+ params.update({"pageIndex": page})
935
+ r = requests.get(url, params=params, headers=headers)
936
+ data_json = r.json()
937
+ temp_df = pd.DataFrame(data_json["Data"]["LSJZList"])
938
+ df_list.append(temp_df)
939
+ big_df = pd.concat(df_list)
940
+ big_df.columns = [
960
941
  "净值日期",
961
942
  "单位净值",
962
943
  "累计净值",
@@ -971,15 +952,15 @@ def fund_etf_fund_info_em(
971
952
  "_",
972
953
  "_",
973
954
  ]
974
- temp_df = temp_df[
955
+ big_df = big_df[
975
956
  ["净值日期", "单位净值", "累计净值", "日增长率", "申购状态", "赎回状态"]
976
957
  ]
977
- temp_df["净值日期"] = pd.to_datetime(temp_df["净值日期"]).dt.date
978
- temp_df["单位净值"] = pd.to_numeric(temp_df["单位净值"])
979
- temp_df["累计净值"] = pd.to_numeric(temp_df["累计净值"])
980
- temp_df["日增长率"] = pd.to_numeric(temp_df["日增长率"])
981
- temp_df.sort_values(["净值日期"], inplace=True, ignore_index=True)
982
- return temp_df
958
+ big_df["净值日期"] = pd.to_datetime(big_df["净值日期"], errors="coerce").dt.date
959
+ big_df["单位净值"] = pd.to_numeric(big_df["单位净值"], errors="coerce")
960
+ big_df["累计净值"] = pd.to_numeric(big_df["累计净值"], errors="coerce")
961
+ big_df["日增长率"] = pd.to_numeric(big_df["日增长率"], errors="coerce")
962
+ big_df.sort_values(["净值日期"], inplace=True, ignore_index=True)
963
+ return big_df
983
964
 
984
965
 
985
966
  def fund_value_estimation_em(symbol: str = "全部") -> pd.DataFrame:
@@ -682,7 +682,7 @@ def get_futures_daily(
682
682
 
683
683
  if __name__ == "__main__":
684
684
  get_futures_daily_df = get_futures_daily(
685
- start_date="20241118", end_date="20241118", market="DCE"
685
+ start_date="20180326", end_date="20180331", market="INE"
686
686
  )
687
687
  print(get_futures_daily_df)
688
688
 
akshare/stock/stock_xq.py CHANGED
@@ -42,7 +42,7 @@ def stock_individual_spot_xq(
42
42
  """
43
43
  session = requests.Session()
44
44
  headers = {
45
- "cookie": "xq_a_token=691d6f0a678b98a172affb89759b9c46fd23b4e2;",
45
+ "cookie": "xq_a_token=220b0abef0fac476d076c9f7a3938b7edac35f48;",
46
46
  "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 "
47
47
  "(KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1",
48
48
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: akshare
3
- Version: 1.15.45
3
+ Version: 1.15.47
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=ACpa0FRN-FBpuz43nJ_CUGfGHwjVNVqqj2wlZZPRxhM,184449
1
+ akshare/__init__.py,sha256=xV8m6Kb7K2XAxtbL90b96L3gUcVjcJyOjBiV2Up412Q,184550
2
2
  akshare/datasets.py,sha256=-qdwaQjgBlftX84uM74KJqCYJYkQ50PV416_neA4uls,995
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=MrK_HVcRUvHQCrY-blapivPd0La5cVCBNJIG0gW71fs,40844
88
+ akshare/fund/fund_em.py,sha256=nX0VA5JeiF-zRr1J10X-U9-pJj5KFDUAbovN1DWjvTo,40450
89
89
  akshare/fund/fund_etf_em.py,sha256=8HrEQbM3wSMHuTAle9g6iT4ULaPjsqCcTBVU7PrpqJA,17377
90
90
  akshare/fund/fund_etf_sina.py,sha256=3eYnpug02oSZfR6fuWsT5mZRMRNm39VYCLHKnWdvonM,5218
91
91
  akshare/fund/fund_etf_ths.py,sha256=vb_jy0h2-Kz2dNWUrwBYxPB0MAotv0KZgnFhE98ohSM,3432
@@ -109,7 +109,7 @@ akshare/futures/futures_comex_em.py,sha256=V-mkKQkH5N8PyaZWKdyggb2lTnY8DDDxiUPt-
109
109
  akshare/futures/futures_comm_ctp.py,sha256=V8TEKO0R0i6LfE8DDFqrMA3JGwNlpmaQCvvMugKZ1I8,1004
110
110
  akshare/futures/futures_comm_qihuo.py,sha256=uQfabZ63qME8sTaxUbIUVQBVi8yTaPPDhD7voR9PEx0,10504
111
111
  akshare/futures/futures_contract_detail.py,sha256=auwzNdaoFi5hoJY6rNkO54v5FD2gmEkQu7B90yEDtkc,1175
112
- akshare/futures/futures_daily_bar.py,sha256=AWIo8Tvup16TlxhUsrhpM61hNHBxsieiN1WQ5zAE1h0,25299
112
+ akshare/futures/futures_daily_bar.py,sha256=pWjpy6O27EVCtQmDYr6Og3-qqrDzQkKuYfS-f4dme7k,25299
113
113
  akshare/futures/futures_foreign.py,sha256=oSIoAg5oy-CIlPWHkQffcvZGu02Y2GWOrt-6aPA53Xg,2059
114
114
  akshare/futures/futures_hf_em.py,sha256=jne-wUYr2QTUkDq3qAxYKE0Hm90L3H8qUDu3JavKiUg,3338
115
115
  akshare/futures/futures_hq_sina.py,sha256=eK1gEan4DPvpYmln8-tNnzh_J_733s95DBr--NqNYVA,9576
@@ -274,7 +274,7 @@ akshare/stock/stock_us_js.py,sha256=wwZpRvVHqjxwd0cb2O5vtRW8Zw90Kdl5O4XNwoevN64,
274
274
  akshare/stock/stock_us_pink.py,sha256=jgkEjPm_qa4zSN1MH0unHJopSkcF-8Rqlp5Kus2KaQ8,3062
275
275
  akshare/stock/stock_us_sina.py,sha256=3bD41Y5GqDTv52bx5jbjrt0psaHZS10UL_e7E2B6wW8,8146
276
276
  akshare/stock/stock_weibo_nlp.py,sha256=eM7ofsNSrKiYeS0g38Qj9CxT6dkJZrn_pmziIiTqp4U,3286
277
- akshare/stock/stock_xq.py,sha256=hmnHnAq5QnZbZfeyRlyUKBpUgLIxIAeezVuRyOL2nus,4520
277
+ akshare/stock/stock_xq.py,sha256=Ar-0w8j3_ZryCngX0Ni1hKQKyf5nvuQJvHgwCqCFpsM,4520
278
278
  akshare/stock/stock_zh_a_sina.py,sha256=ZobGnFMIR67ENk05ocqIkeiItLlgK67dW8ZjLdDss3s,18862
279
279
  akshare/stock/stock_zh_a_special.py,sha256=RRXkeZtRWm_maIPWgxvhBdX6eNybECjhSuEesZHRFJI,10294
280
280
  akshare/stock/stock_zh_a_tick_tx.py,sha256=TJUAWLKAeoLEaVVJQlj0t-1smZGoAO0X0rPsUPVhZZ4,2131
@@ -380,8 +380,8 @@ akshare/utils/token_process.py,sha256=K4rGXjh_tgugbRcyOK2h2x0jP3PT65IIK7nxhUKhOe
380
380
  akshare/utils/tqdm.py,sha256=MuPNwcswkOGjwWQOMWXi9ZvQ_RmW4obCWRj2i7HM7FE,847
381
381
  tests/__init__.py,sha256=gNzhlO0UPjFq6Ieb38kaVIODXv4cTDByrdohAZnDYt4,82
382
382
  tests/test_func.py,sha256=j1MGYbZI2if2j_LY1S4FLsf4qfq4NwVqD5wmRlv5Log,832
383
- akshare-1.15.45.dist-info/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
384
- akshare-1.15.45.dist-info/METADATA,sha256=i3mygGTuHA_N5-Jvv3KIwajE9NEQ8xqK0oVtuyDyqdA,13423
385
- akshare-1.15.45.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
386
- akshare-1.15.45.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
387
- akshare-1.15.45.dist-info/RECORD,,
383
+ akshare-1.15.47.dist-info/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
384
+ akshare-1.15.47.dist-info/METADATA,sha256=08NQqWqFRtnW04u-_GGZzlgN7xAv1YWhEaIooDkCqQs,13423
385
+ akshare-1.15.47.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
386
+ akshare-1.15.47.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
387
+ akshare-1.15.47.dist-info/RECORD,,