akshare 1.17.78__py3-none-any.whl → 1.17.79__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
@@ -3185,9 +3185,10 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
3185
3185
  1.17.76 fix: fix futures_index_ccidx interface
3186
3186
  1.17.77 fix: fix get_dce_daily interface
3187
3187
  1.17.78 fix: fix update python 3.14 support
3188
+ 1.17.79 fix: fix futures_contract_info_dce interface
3188
3189
  """
3189
3190
 
3190
- __version__ = "1.17.78"
3191
+ __version__ = "1.17.79"
3191
3192
  __author__ = "AKFamily"
3192
3193
 
3193
3194
  import sys
@@ -6,29 +6,48 @@ Desc: 大连商品交易所-业务/服务-业务参数-交易参数-合约信息
6
6
  http://www.dce.com.cn/dalianshangpin/ywfw/ywcs/jycs/hyxxcx/index.html
7
7
  """
8
8
 
9
- from io import StringIO
10
-
11
9
  import pandas as pd
12
10
  import requests
13
11
 
14
12
 
15
13
  def futures_contract_info_dce() -> pd.DataFrame:
16
14
  """
17
- 大连商品交易所-业务/服务-业务参数-交易参数-合约信息查询
18
- http://www.dce.com.cn/dalianshangpin/ywfw/ywcs/jycs/hyxxcx/index.html
15
+ 大连商品交易所-数据中心-业务数据-交易参数-合约信息
16
+ http://www.dce.com.cn/dce/channel/list/180.html
19
17
  :return: 交易参数汇总查询
20
18
  :rtype: pandas.DataFrame
21
19
  """
22
- url = "http://portal.dce.com.cn/publicweb/businessguidelines/queryContractInfo.html"
23
- params = {
24
- "contractInformation.variety": "all",
25
- "contractInformation.trade_type": "0",
20
+ url = "http://www.dce.com.cn/dcereport/publicweb/tradepara/contractInfo"
21
+ payload = {
22
+ "lang": "zh",
23
+ "tradeType": "1",
24
+ "varietyId": "all",
26
25
  }
27
- r = requests.post(url, params=params)
28
- temp_df = pd.read_html(StringIO(r.text))[0]
26
+ r = requests.post(url, json=payload)
27
+ data_json = r.json()
28
+ temp_df = pd.DataFrame(data_json['data'])
29
+ temp_df.rename(columns={
30
+ "contractId": "合约",
31
+ "variety": "品种名称",
32
+ "varietyOrder": "品种代码",
33
+ "unit": "交易单位",
34
+ "tick": "最小变动价位",
35
+ "startTradeDate": "开始交易日",
36
+ "endTradeDate": "最后交易日",
37
+ "endDeliveryDate": "最后交割日",
38
+ "tradeType": "",
39
+ }, inplace=True)
40
+ temp_df = temp_df[[
41
+ "品种名称",
42
+ "合约",
43
+ "交易单位",
44
+ "最小变动价位",
45
+ "开始交易日",
46
+ "最后交易日",
47
+ "最后交割日",
48
+ ]]
29
49
  temp_df["交易单位"] = pd.to_numeric(temp_df["交易单位"], errors="coerce")
30
50
  temp_df["最小变动价位"] = pd.to_numeric(temp_df["最小变动价位"], errors="coerce")
31
- temp_df["最小变动价位"] = pd.to_numeric(temp_df["最小变动价位"], errors="coerce")
32
51
  temp_df["开始交易日"] = pd.to_datetime(
33
52
  temp_df["开始交易日"], format="%Y%m%d", errors="coerce"
34
53
  ).dt.date
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/4/25 20:24
4
+ Date: 2025/10/30 20:24
5
5
  Desc: 市盈率, 市净率和股息率查询
6
6
  https://www.legulegu.com/stocklist
7
7
  https://www.legulegu.com/s/000001
@@ -24,12 +24,17 @@ def get_cookie_csrf(url: str = "") -> dict:
24
24
  :return: 指定市场的市盈率数据
25
25
  :rtype: pandas.DataFrame
26
26
  """
27
- r = requests.get(url, headers=headers)
27
+ # 创建独立的 session,避免污染全局状态
28
+ session = requests.Session()
29
+ session.headers.update(headers)
30
+ r = session.get(url)
28
31
  soup = BeautifulSoup(r.text, features="lxml")
29
32
  csrf_tag = soup.find(name="meta", attrs={"name": "_csrf"})
30
33
  csrf_token = csrf_tag.attrs["content"]
31
- headers.update({"X-CSRF-Token": csrf_token})
32
- return {"cookies": r.cookies, "headers": headers}
34
+ # 创建新的 headers
35
+ local_headers = headers.copy()
36
+ local_headers.update({"X-CSRF-Token": csrf_token})
37
+ return {"cookies": r.cookies, "headers": local_headers}
33
38
 
34
39
 
35
40
  def get_token_lg() -> str:
@@ -1,11 +1,10 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2025/10/28 15:00
4
+ Date: 2025/10/30 15:00
5
5
  Desc: 全部A股-等权重市盈率、中位数市盈率
6
6
  https://www.legulegu.com/stockdata/a-ttm-lyr
7
7
  """
8
-
9
8
  import pandas as pd
10
9
  import requests
11
10
 
@@ -15,29 +14,36 @@ from akshare.stock_feature.stock_a_indicator import get_token_lg, get_cookie_csr
15
14
  def stock_a_ttm_lyr() -> pd.DataFrame:
16
15
  """
17
16
  全部 A 股-等权重市盈率、中位数市盈率
18
- https://www.legulegu.com/stockdata/a-ttm-lyr
19
17
  :return: 全部A股-等权重市盈率、中位数市盈率
20
18
  :rtype: pandas.DataFrame
21
19
  """
20
+
22
21
  url = "https://legulegu.com/api/stock-data/market-ttm-lyr"
23
22
  params = {
24
23
  "marketId": "5",
25
24
  "token": get_token_lg(),
26
25
  }
27
- headers = get_cookie_csrf(url="https://www.legulegu.com/stockdata/a-ttm-lyr")['headers']
28
- headers.update({
26
+ # 获取 cookie 和 headers
27
+ csrf_data = get_cookie_csrf(url="https://www.legulegu.com/stockdata/a-ttm-lyr")
28
+ # 使用返回的 headers(已经是副本)
29
+ request_headers = csrf_data['headers'].copy()
30
+ request_headers.update({
29
31
  "host": "www.legulegu.com",
30
32
  "referer": "https://www.legulegu.com/stockdata/a-ttm-lyr",
31
33
  })
32
- r = requests.get(
34
+ # 使用独立的 session
35
+ session = requests.Session()
36
+ r = session.get(
33
37
  url,
34
38
  params=params,
35
- cookies=get_cookie_csrf(url="https://www.legulegu.com/stockdata/a-ttm-lyr")['cookies'],
36
- headers=headers,
39
+ cookies=csrf_data['cookies'],
40
+ headers=request_headers,
37
41
  )
38
42
  data_json = r.json()
39
43
  temp_df = pd.DataFrame(data_json["data"])
40
44
  temp_df["date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
45
+ # 关闭 session
46
+ session.close()
41
47
  return temp_df
42
48
 
43
49
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: akshare
3
- Version: 1.17.78
3
+ Version: 1.17.79
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=tHBli0wHZVoceyOZk9qIYFUgPpA1NGUjAwwqn5yVzgk,199817
1
+ akshare/__init__.py,sha256=ArGXqIb7a8jv-sv4GY_z7akxCk5uetHvFdItlphKoYc,199870
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
@@ -140,7 +140,7 @@ akshare/futures_derivative/__init__.py,sha256=COFyP01gIUhWs4EBr6hwL73B7IWePIzg7v
140
140
  akshare/futures_derivative/cons.py,sha256=VkG1HMwPVxvj7BaMifcvDpRYLsfd506npVNiEIaLF_s,5914
141
141
  akshare/futures_derivative/futures_contract_info_cffex.py,sha256=Vv8ovM3FR1HTNj0Oe6LDmP1CO3lWYhcls9ck-iFir8U,3497
142
142
  akshare/futures_derivative/futures_contract_info_czce.py,sha256=PQOcX1DBphqdf01U9zH5D5vqZvPuSif5Tlpisnrzl_U,4329
143
- akshare/futures_derivative/futures_contract_info_dce.py,sha256=_VOfb7JT8CRHkZlL4rIKcrCIf-JvITFs45CT2zE5ugc,1709
143
+ akshare/futures_derivative/futures_contract_info_dce.py,sha256=MAajQxkWPfAW0qPTuIHGfgUPZlIJzuTlpOB91z6ElB0,2145
144
144
  akshare/futures_derivative/futures_contract_info_gfex.py,sha256=jWQ7TKPNfEjf1FUCnJqWlHmkvv0qYX0xi0JEEUAuzRg,2313
145
145
  akshare/futures_derivative/futures_contract_info_ine.py,sha256=vwCPG-Vl8c_Wy3ydBZ11ghMM5gjuPN0x9QFvyWxewXI,2433
146
146
  akshare/futures_derivative/futures_contract_info_shfe.py,sha256=PA_S7uIhCidMv2csJ8DpBtKvDQs9GaoZq-yt8oDoyfU,2454
@@ -304,7 +304,7 @@ akshare/stock_feature/__init__.py,sha256=c2VDBGyg8nWZYLvtnnSqUoQ92Cu6dJ7UFOeJsB2
304
304
  akshare/stock_feature/cons.py,sha256=h_cIhO4YEx8joPozwE5-jHABPsT8tN7tkZ5v-gcTfmw,466
305
305
  akshare/stock_feature/stock_a_below_net_asset_statistics.py,sha256=XrhZI-wLuXXufI5Nh1l9gUx9x7f0iDtdtKa14wexo54,2653
306
306
  akshare/stock_feature/stock_a_high_low.py,sha256=xS7btdwjlMvxrOu0I3qhezOqLV0gUuHl66FLB_ioxTo,2044
307
- akshare/stock_feature/stock_a_indicator.py,sha256=R8RArKYY3eI3IOTbpb0H7zqMkYBy5peswafRPQRy3Ws,2714
307
+ akshare/stock_feature/stock_a_indicator.py,sha256=6_gTR5HiDfPv6c94DD4AFqIPXRRAxgPxt_A8funQrts,2897
308
308
  akshare/stock_feature/stock_a_pe_and_pb.py,sha256=9HfjTSL_DTlAVvv7o3--pOdZiFwhRzYki7O5DfTrNW8,19089
309
309
  akshare/stock_feature/stock_account_em.py,sha256=4Vh1zoRXmuoGWu1Dw65c9mhIALqOVpb9PLqG5BJgQVg,3312
310
310
  akshare/stock_feature/stock_all_pb.py,sha256=hshUYjNXPPYf3LYj4N0zeT9Q9kxpdBhQVLB9AEPSkAc,1196
@@ -357,7 +357,7 @@ akshare/stock_feature/stock_sy_em.py,sha256=GysP1WvPpqCLhbCRXH5sxwmXCPYvgtbJYQ_j
357
357
  akshare/stock_feature/stock_technology_ths.py,sha256=4u9z7H6MYEutOYAQvYfzgc_FxG6XlhkMLujSotAbraw,30827
358
358
  akshare/stock_feature/stock_tfp_em.py,sha256=Y3jjZ758AlCvmSHr7tlT0CMk5MawbLln0cMtl1dqYMY,2481
359
359
  akshare/stock_feature/stock_three_report_em.py,sha256=SBksPOAGwYFDZSqoOXFg_d4qowHNZdw7JVOMFhMbBG0,24181
360
- akshare/stock_feature/stock_ttm_lyr.py,sha256=VzxwSzQZNaEJlW7azS1FxZJSyk9V7DrMt25285U1mw4,1376
360
+ akshare/stock_feature/stock_ttm_lyr.py,sha256=EZjP1sXfix60Qii1W3MOnHQ-k1FU-rZ6yjgzxVU8m54,1512
361
361
  akshare/stock_feature/stock_value_em.py,sha256=RA842dkeChSEoS3yN9fiGxS3eDzYjeUdrpXbnteyzZY,2576
362
362
  akshare/stock_feature/stock_yjbb_em.py,sha256=hQBr1aj808AdA88Y_dpuR7G1mb487hcRamD31UZus-s,4689
363
363
  akshare/stock_feature/stock_yjyg_cninfo.py,sha256=KM0O5rHBkVAxDl4dmA_WAgqBWJMuaMLoQ2PyJ-VPBi4,2889
@@ -399,10 +399,10 @@ akshare/utils/func.py,sha256=4cwmXFztU86yJNONJ40KJLvsIEQHBbct4iMm3zT2v30,2315
399
399
  akshare/utils/multi_decrypt.py,sha256=aWoL2iEPeuXHJg8-n7OtMKixLnIhfzepACgxfrfmQB4,1657
400
400
  akshare/utils/token_process.py,sha256=nGtgnZGRprXJkhLXH8mcUH4TgIFwzsTOb0EaEPa0Euo,667
401
401
  akshare/utils/tqdm.py,sha256=MuPNwcswkOGjwWQOMWXi9ZvQ_RmW4obCWRj2i7HM7FE,847
402
- akshare-1.17.78.dist-info/licenses/LICENSE,sha256=s18q7gS2g1F9-Cnk5eqrJG4OGWSwSxVEMzIuT6HyYNY,1073
402
+ akshare-1.17.79.dist-info/licenses/LICENSE,sha256=s18q7gS2g1F9-Cnk5eqrJG4OGWSwSxVEMzIuT6HyYNY,1073
403
403
  tests/__init__.py,sha256=gNzhlO0UPjFq6Ieb38kaVIODXv4cTDByrdohAZnDYt4,82
404
404
  tests/test_func.py,sha256=j1MGYbZI2if2j_LY1S4FLsf4qfq4NwVqD5wmRlv5Log,832
405
- akshare-1.17.78.dist-info/METADATA,sha256=_oUoxT9VN0hwMekxJS0SFz9KItxKcStHuAl-WmeKVzY,12765
406
- akshare-1.17.78.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
407
- akshare-1.17.78.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
408
- akshare-1.17.78.dist-info/RECORD,,
405
+ akshare-1.17.79.dist-info/METADATA,sha256=Smt8eGLyk8WzNk3ViPPNrS-OErkfjKB2H54ikk5WhTE,12765
406
+ akshare-1.17.79.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
407
+ akshare-1.17.79.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
408
+ akshare-1.17.79.dist-info/RECORD,,