akshare 1.16.92__py3-none-any.whl → 1.16.94__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
@@ -3100,9 +3100,11 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
3100
3100
  1.16.90 fix: fix stock_hk_company_profile_em interface
3101
3101
  1.16.91 fix: fix stock_sse_deal_daily interface
3102
3102
  1.16.92 fix: fix bond_cb_jsl interface
3103
+ 1.16.93 fix: fix stock_hsgt_individual_em interface
3104
+ 1.16.94 fix: fix futures_fees_info interface
3103
3105
  """
3104
3106
 
3105
- __version__ = "1.16.92"
3107
+ __version__ = "1.16.94"
3106
3108
  __author__ = "AKFamily"
3107
3109
 
3108
3110
  import sys
@@ -23,7 +23,7 @@ def futures_fees_info() -> pd.DataFrame:
23
23
  """
24
24
  url = "http://openctp.cn/fees.html"
25
25
  r = requests.get(url)
26
- r.encoding = "gb2312"
26
+ r.encoding = "utf-8"
27
27
  soup = BeautifulSoup(r.text, features="lxml")
28
28
  datetime_str = soup.find("p").string.strip("Generated at ").strip(".")
29
29
  datetime_raw = datetime.strptime(datetime_str, "%Y-%m-%d %H:%M:%S")
@@ -1327,12 +1327,12 @@ def stock_hsgt_board_rank_em(
1327
1327
  return temp_df
1328
1328
 
1329
1329
 
1330
- def stock_hsgt_individual_em(stock: str = "002008") -> pd.DataFrame:
1330
+ def __stock_hsgt_individual_zh_hk_em(symbol: str = "00700") -> pd.DataFrame:
1331
1331
  """
1332
1332
  东方财富-数据中心-沪深港通-沪深港通持股-具体股票
1333
- https://data.eastmoney.com/hsgtcg/StockHdStatistics/002008.html
1334
- :param stock: 股票代码
1335
- :type stock: str
1333
+ https://data.eastmoney.com/hsgt/StockHdDetail/00700.html
1334
+ :param symbol: 股票代码
1335
+ :type symbol: str
1336
1336
  :return: 具体股票-沪深港通持股
1337
1337
  :rtype: pandas.DataFrame
1338
1338
  """
@@ -1342,15 +1342,28 @@ def stock_hsgt_individual_em(stock: str = "002008") -> pd.DataFrame:
1342
1342
  "sortTypes": "-1",
1343
1343
  "pageSize": "500",
1344
1344
  "pageNumber": "1",
1345
- "reportName": "RPT_MUTUAL_HOLDSTOCKNORTH_STA",
1345
+ "reportName": "RPT_MUTUAL_STOCK_HOLDRANKS",
1346
1346
  "columns": "ALL",
1347
1347
  "source": "WEB",
1348
1348
  "client": "WEB",
1349
- "filter": f"""(SECURITY_CODE="{stock}")(TRADE_DATE>='2020-07-25')""",
1349
+ "filter": f"""(SECUCODE="{symbol}.HK")(MUTUAL_TYPE="002")""",
1350
1350
  }
1351
1351
  r = requests.get(url, params=params)
1352
1352
  data_json = r.json()
1353
+ total_page = data_json["result"]["pages"]
1353
1354
  temp_df = pd.DataFrame(data_json["result"]["data"])
1355
+ for page in range(1, total_page + 1):
1356
+ params.update({"pageNumber": str(page)})
1357
+ r = requests.get(url, params=params)
1358
+ data_json = r.json()
1359
+ if page == 1:
1360
+ temp_df = pd.DataFrame(data_json["result"]["data"])
1361
+ else:
1362
+ temp_df = pd.concat(
1363
+ objs=[temp_df, pd.DataFrame(data_json["result"]["data"])],
1364
+ ignore_index=True,
1365
+ )
1366
+
1354
1367
  temp_df.rename(
1355
1368
  columns={
1356
1369
  "SECURITY_INNER_CODE": "-",
@@ -1403,9 +1416,118 @@ def stock_hsgt_individual_em(stock: str = "002008") -> pd.DataFrame:
1403
1416
  temp_df["持股市值变化-10日"] = pd.to_numeric(
1404
1417
  temp_df["持股市值变化-10日"], errors="coerce"
1405
1418
  )
1419
+ temp_df.sort_values("持股日期", ignore_index=True, inplace=True)
1420
+ return temp_df
1421
+
1422
+
1423
+ def __stock_hsgt_individual_zh_a_em(symbol: str = "002008") -> pd.DataFrame:
1424
+ """
1425
+ 东方财富-数据中心-沪深港通-沪深港通持股-具体股票
1426
+ https://data.eastmoney.com/hsgt/StockHdStatistics/002008.html
1427
+ :param symbol: 股票代码
1428
+ :type symbol: str
1429
+ :return: 具体股票-沪深港通持股
1430
+ :rtype: pandas.DataFrame
1431
+ """
1432
+ url = "https://datacenter-web.eastmoney.com/api/data/v1/get"
1433
+ params = {
1434
+ "sortColumns": "TRADE_DATE",
1435
+ "sortTypes": "-1",
1436
+ "pageSize": "500",
1437
+ "pageNumber": "1",
1438
+ "reportName": "RPT_MUTUAL_HOLDSTOCKNDATE_STA",
1439
+ "columns": "ALL",
1440
+ "source": "WEB",
1441
+ "client": "WEB",
1442
+ "filter": f"""(SECURITY_CODE="{symbol}")(INTERVAL_TYPE="1")""",
1443
+ }
1444
+ r = requests.get(url, params=params)
1445
+ data_json = r.json()
1446
+ total_page = data_json["result"]["pages"]
1447
+ temp_df = pd.DataFrame(data_json["result"]["data"])
1448
+ for page in range(1, total_page + 1):
1449
+ params.update({"pageNumber": str(page)})
1450
+ r = requests.get(url, params=params)
1451
+ data_json = r.json()
1452
+ if page == 1:
1453
+ temp_df = pd.DataFrame(data_json["result"]["data"])
1454
+ else:
1455
+ temp_df = pd.concat(
1456
+ objs=[temp_df, pd.DataFrame(data_json["result"]["data"])],
1457
+ ignore_index=True,
1458
+ )
1459
+
1460
+ temp_df.rename(
1461
+ columns={
1462
+ "SECURITY_INNER_CODE": "-",
1463
+ "SECUCODE": "-",
1464
+ "TRADE_DATE": "持股日期",
1465
+ "SECURITY_CODE": "-",
1466
+ "SECURITY_NAME": "-",
1467
+ "MUTUAL_TYPE": "-",
1468
+ "CHANGE_RATE": "当日涨跌幅",
1469
+ "CLOSE_PRICE": "当日收盘价",
1470
+ "HOLD_SHARES": "持股数量",
1471
+ "HOLD_MARKET_CAP": "持股市值",
1472
+ "A_SHARES_RATIO": "-",
1473
+ "HOLD_SHARES_RATIO": "持股数量占A股百分比",
1474
+ "FREE_SHARES_RATIO": "-",
1475
+ "TOTAL_SHARES_RATIO": "-",
1476
+ "HMC_CHANGE": "今日持股市值变化",
1477
+ "ADD_SHARES_REPAIR": "今日增持股数",
1478
+ "PREDICT_AMC": "今日增持资金",
1479
+ },
1480
+ inplace=True,
1481
+ )
1482
+ temp_df = temp_df[
1483
+ [
1484
+ "持股日期",
1485
+ "当日收盘价",
1486
+ "当日涨跌幅",
1487
+ "持股数量",
1488
+ "持股市值",
1489
+ "持股数量占A股百分比",
1490
+ "今日增持股数",
1491
+ "今日增持资金",
1492
+ "今日持股市值变化",
1493
+ ]
1494
+ ]
1495
+ temp_df["持股日期"] = pd.to_datetime(temp_df["持股日期"], errors="coerce").dt.date
1496
+ temp_df["当日收盘价"] = pd.to_numeric(temp_df["当日收盘价"], errors="coerce")
1497
+ temp_df["当日涨跌幅"] = pd.to_numeric(temp_df["当日涨跌幅"], errors="coerce")
1498
+ temp_df["持股数量"] = pd.to_numeric(temp_df["持股数量"], errors="coerce")
1499
+ temp_df["持股市值"] = pd.to_numeric(temp_df["持股市值"], errors="coerce")
1500
+ temp_df["持股数量占A股百分比"] = pd.to_numeric(
1501
+ temp_df["持股数量占A股百分比"], errors="coerce"
1502
+ )
1503
+ temp_df["今日增持股数"] = pd.to_numeric(
1504
+ temp_df["今日增持股数"], errors="coerce"
1505
+ )
1506
+ temp_df["今日增持资金"] = pd.to_numeric(
1507
+ temp_df["今日增持资金"], errors="coerce"
1508
+ )
1509
+ temp_df["今日持股市值变化"] = pd.to_numeric(
1510
+ temp_df["今日持股市值变化"], errors="coerce"
1511
+ )
1512
+ temp_df.sort_values("持股日期", ignore_index=True, inplace=True)
1406
1513
  return temp_df
1407
1514
 
1408
1515
 
1516
+ def stock_hsgt_individual_em(symbol: str = "002008") -> pd.DataFrame:
1517
+ """
1518
+ 东方财富-数据中心-沪深港通-沪深港通持股-具体股票
1519
+ https://data.eastmoney.com/hsgt/StockHdDetail/002008.html
1520
+ :param symbol: 股票代码
1521
+ :type symbol: str
1522
+ :return: 具体股票-沪深港通持股
1523
+ :rtype: pandas.DataFrame
1524
+ """
1525
+ if len(symbol) == 6:
1526
+ return __stock_hsgt_individual_zh_a_em(symbol=symbol)
1527
+ else:
1528
+ return __stock_hsgt_individual_zh_hk_em(symbol=symbol)
1529
+
1530
+
1409
1531
  def stock_hsgt_individual_detail_em(
1410
1532
  symbol: str = "002008",
1411
1533
  start_date: str = "20220130",
@@ -1591,7 +1713,7 @@ if __name__ == "__main__":
1591
1713
  )
1592
1714
  print(stock_hsgt_board_rank_em_df)
1593
1715
 
1594
- stock_hsgt_individual_em_df = stock_hsgt_individual_em(stock="002008")
1716
+ stock_hsgt_individual_em_df = stock_hsgt_individual_em(symbol="00700")
1595
1717
  print(stock_hsgt_individual_em_df)
1596
1718
 
1597
1719
  stock_hsgt_individual_detail_em_df = stock_hsgt_individual_detail_em(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: akshare
3
- Version: 1.16.92
3
+ Version: 1.16.94
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=pgqQdoKXjY_ze35wg9svtl_n7R9M3Ac6GvR12YKJUdw,193932
1
+ akshare/__init__.py,sha256=yqQRNhtd-YzcitCzBRLeF6ikmyi84MLohrAJlcoZQtw,194029
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
@@ -111,7 +111,7 @@ akshare/futures/cons.py,sha256=SO11mUW9n0K3wVDwkUmqJepD4XL-1-MEBbsfdqrNnlA,17540
111
111
  akshare/futures/cot.py,sha256=GptYlcw4lyHOhW8M5hW55sNMk_fz3swjikhaSJqAmYo,58624
112
112
  akshare/futures/futures_basis.py,sha256=pmXNXdWnfvJCRs6xKJ0Ed9R2v92-NK2Sp3AjlwecErc,15691
113
113
  akshare/futures/futures_comex_em.py,sha256=NPwOCD6lZUDL4wlGxvbmmJIFkQlW427ERO0vTux13WU,3172
114
- akshare/futures/futures_comm_ctp.py,sha256=V8TEKO0R0i6LfE8DDFqrMA3JGwNlpmaQCvvMugKZ1I8,1004
114
+ akshare/futures/futures_comm_ctp.py,sha256=IyVRCUvhLTFzmcUVvlIaYZ1e38ll7AF8ExhgtXKuzrI,1003
115
115
  akshare/futures/futures_comm_qihuo.py,sha256=uQfabZ63qME8sTaxUbIUVQBVi8yTaPPDhD7voR9PEx0,10504
116
116
  akshare/futures/futures_contract_detail.py,sha256=Glm1x72WBwF4G-f_ZYzHsbNhlQ6Ti1HeF0Rzhx-pfFg,1190
117
117
  akshare/futures/futures_daily_bar.py,sha256=pultXs8digLfWT0dzyWs0AtFk3Fi2uZDT-zxbg_PcOM,25299
@@ -326,7 +326,7 @@ akshare/stock_feature/stock_hist_em.py,sha256=4WN44TUCdjjxVyhMbvQG3Ttm2ShG3_kh5X
326
326
  akshare/stock_feature/stock_hist_tx.py,sha256=T3eegWWohahHzsFOx58qJFLq9QQRUiDXEaiJdQLkex0,3346
327
327
  akshare/stock_feature/stock_hk_valuation_baidu.py,sha256=_sErx4UhNsSXJgXyPfrL0aPxkW53Mg1zH9gEKoziaCA,1968
328
328
  akshare/stock_feature/stock_hot_xq.py,sha256=P4-fLjrh-9CdVe5BQ2O5hmeSesHQAu9E49aMKmhMedM,9023
329
- akshare/stock_feature/stock_hsgt_em.py,sha256=qdR2ZqnrVgAukZ3SdU59b8em2Ki2qxiqfDc121Wnl8M,57638
329
+ akshare/stock_feature/stock_hsgt_em.py,sha256=6X4izxAbApHIO1YK2nYaZCE1hdn18tTbGjJta4Q-7a0,62222
330
330
  akshare/stock_feature/stock_hsgt_exchange_rate.py,sha256=dSNtqVUyySIqfBu9U5TiDZOETwb2fcO6Y16vLc67c0w,7152
331
331
  akshare/stock_feature/stock_hsgt_min_em.py,sha256=DBNrZwbbR_XoGvGHvi-vexWsBq1Ddio8qe0L9ck0iqY,2841
332
332
  akshare/stock_feature/stock_info.py,sha256=JSmJWrSzzq4sP4CgOU0mYGVcbXeWlRDQxNYtbSjJmiM,9043
@@ -391,10 +391,10 @@ akshare/utils/func.py,sha256=4cwmXFztU86yJNONJ40KJLvsIEQHBbct4iMm3zT2v30,2315
391
391
  akshare/utils/multi_decrypt.py,sha256=aWoL2iEPeuXHJg8-n7OtMKixLnIhfzepACgxfrfmQB4,1657
392
392
  akshare/utils/token_process.py,sha256=nGtgnZGRprXJkhLXH8mcUH4TgIFwzsTOb0EaEPa0Euo,667
393
393
  akshare/utils/tqdm.py,sha256=MuPNwcswkOGjwWQOMWXi9ZvQ_RmW4obCWRj2i7HM7FE,847
394
- akshare-1.16.92.dist-info/licenses/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
394
+ akshare-1.16.94.dist-info/licenses/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
395
395
  tests/__init__.py,sha256=gNzhlO0UPjFq6Ieb38kaVIODXv4cTDByrdohAZnDYt4,82
396
396
  tests/test_func.py,sha256=j1MGYbZI2if2j_LY1S4FLsf4qfq4NwVqD5wmRlv5Log,832
397
- akshare-1.16.92.dist-info/METADATA,sha256=wkydrCZ8ttmlad1WBR1yR8GYjRtS0s1ghWDzNK5LU30,11902
398
- akshare-1.16.92.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
399
- akshare-1.16.92.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
400
- akshare-1.16.92.dist-info/RECORD,,
397
+ akshare-1.16.94.dist-info/METADATA,sha256=YFcrPxnL-Y09BjxXlLWe7afvg6SUPit5Bezu6BoHmqE,11902
398
+ akshare-1.16.94.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
399
+ akshare-1.16.94.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
400
+ akshare-1.16.94.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.7.1)
2
+ Generator: setuptools (80.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5