akshare 1.14.36__py3-none-any.whl → 1.14.37__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 +2 -1
- akshare/air/air_zhenqi.py +3 -3
- akshare/bond/bond_issue_cninfo.py +1 -1
- akshare/bond/bond_zh_cov.py +1 -1
- akshare/bond/bond_zh_sina.py +1 -1
- akshare/fund/fund_etf_sina.py +2 -1
- akshare/fund/fund_report_cninfo.py +41 -30
- akshare/futures/futures_zh_sina.py +1 -1
- akshare/index/index_fear_greed_funddb.py +1 -1
- akshare/index/index_stock_hk.py +1 -1
- akshare/index/index_stock_us_sina.py +1 -1
- akshare/index/index_stock_zh.py +1 -1
- akshare/movie/artist_yien.py +32 -5
- akshare/movie/movie_yien.py +1 -1
- akshare/movie/video_yien.py +28 -5
- akshare/stock/stock_allotment_cninfo.py +1 -1
- akshare/stock/stock_cg_equity_mortgage.py +5 -2
- akshare/stock/stock_cg_guarantee.py +1 -1
- akshare/stock/stock_cg_lawsuit.py +36 -35
- akshare/stock/stock_dividend_cninfo.py +1 -1
- akshare/stock/stock_hk_sina.py +8 -7
- akshare/stock/stock_hold_control_cninfo.py +2 -1
- akshare/stock/stock_hold_num_cninfo.py +8 -3
- akshare/stock/stock_industry_cninfo.py +1 -1
- akshare/stock/stock_industry_pe_cninfo.py +1 -1
- akshare/stock/stock_ipo_summary_cninfo.py +1 -1
- akshare/stock/stock_new_cninfo.py +17 -6
- akshare/stock/stock_profile_cninfo.py +1 -1
- akshare/stock/stock_rank_forecast.py +2 -1
- akshare/stock/stock_share_changes_cninfo.py +1 -1
- akshare/stock/stock_us_sina.py +8 -9
- akshare/stock/stock_zh_a_sina.py +1 -1
- akshare/stock/stock_zh_b_sina.py +10 -9
- akshare/stock/stock_zh_kcb_report.py +11 -9
- akshare/stock_feature/stock_a_pe_and_pb.py +1 -1
- akshare/stock_feature/stock_board_industry_ths.py +52 -324
- akshare/stock_feature/stock_cyq_em.py +1 -1
- akshare/stock_feature/stock_fund_flow.py +8 -3
- akshare/stock_feature/stock_technology_ths.py +44 -57
- akshare/tool/trade_date_hist.py +1 -1
- {akshare-1.14.36.dist-info → akshare-1.14.37.dist-info}/METADATA +2 -3
- {akshare-1.14.36.dist-info → akshare-1.14.37.dist-info}/RECORD +45 -45
- {akshare-1.14.36.dist-info → akshare-1.14.37.dist-info}/WHEEL +1 -1
- {akshare-1.14.36.dist-info → akshare-1.14.37.dist-info}/LICENSE +0 -0
- {akshare-1.14.36.dist-info → akshare-1.14.37.dist-info}/top_level.txt +0 -0
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date: 2024/7/
|
|
5
|
-
Desc:
|
|
4
|
+
Date: 2024/7/21 18:20
|
|
5
|
+
Desc: 同花顺-板块-同花顺行业
|
|
6
6
|
https://q.10jqka.com.cn/thshy/
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
9
|
from datetime import datetime
|
|
10
|
+
from functools import lru_cache
|
|
10
11
|
from io import StringIO
|
|
11
12
|
|
|
12
13
|
import pandas as pd
|
|
13
14
|
import requests
|
|
14
15
|
from bs4 import BeautifulSoup
|
|
15
|
-
|
|
16
|
-
from akshare.utils.tqdm import get_tqdm
|
|
16
|
+
import py_mini_racer
|
|
17
17
|
|
|
18
18
|
from akshare.datasets import get_ths_js
|
|
19
19
|
from akshare.utils import demjson
|
|
20
|
+
from akshare.utils.tqdm import get_tqdm
|
|
20
21
|
|
|
21
22
|
|
|
22
23
|
def _get_file_content_ths(file: str = "ths.js") -> str:
|
|
@@ -33,6 +34,37 @@ def _get_file_content_ths(file: str = "ths.js") -> str:
|
|
|
33
34
|
return file_data
|
|
34
35
|
|
|
35
36
|
|
|
37
|
+
@lru_cache()
|
|
38
|
+
def _get_stock_board_industry_name_ths() -> dict:
|
|
39
|
+
"""
|
|
40
|
+
获取同花顺行业代码和名称字典
|
|
41
|
+
:return: 获取同花顺行业代码和名称字典
|
|
42
|
+
:rtype: dict
|
|
43
|
+
"""
|
|
44
|
+
js_code = py_mini_racer.MiniRacer()
|
|
45
|
+
js_content = _get_file_content_ths("ths.js")
|
|
46
|
+
js_code.eval(js_content)
|
|
47
|
+
v_code = js_code.call("v")
|
|
48
|
+
headers = {
|
|
49
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
50
|
+
"Chrome/89.0.4389.90 Safari/537.36",
|
|
51
|
+
"Cookie": f"v={v_code}",
|
|
52
|
+
}
|
|
53
|
+
url = "https://q.10jqka.com.cn/thshy/detail/code/881272/"
|
|
54
|
+
r = requests.get(url, headers=headers)
|
|
55
|
+
soup = BeautifulSoup(r.text, features="lxml")
|
|
56
|
+
code_list = [
|
|
57
|
+
item["href"].split("/")[-2]
|
|
58
|
+
for item in soup.find(name="div", attrs={"class": "cate_inner"}).find_all("a")
|
|
59
|
+
]
|
|
60
|
+
name_list = [
|
|
61
|
+
item.text
|
|
62
|
+
for item in soup.find(name="div", attrs={"class": "cate_inner"}).find_all("a")
|
|
63
|
+
]
|
|
64
|
+
name_code_map = dict(zip(name_list, code_list))
|
|
65
|
+
return name_code_map
|
|
66
|
+
|
|
67
|
+
|
|
36
68
|
def stock_board_industry_name_ths() -> pd.DataFrame:
|
|
37
69
|
"""
|
|
38
70
|
同花顺-板块-行业板块-行业
|
|
@@ -40,319 +72,10 @@ def stock_board_industry_name_ths() -> pd.DataFrame:
|
|
|
40
72
|
:return: 所有行业板块的名称和链接
|
|
41
73
|
:rtype: pandas.DataFrame
|
|
42
74
|
"""
|
|
43
|
-
code_name_ths_map =
|
|
44
|
-
"881101": "种植业与林业",
|
|
45
|
-
"881102": "养殖业",
|
|
46
|
-
"881103": "农产品加工",
|
|
47
|
-
"881104": "农业服务",
|
|
48
|
-
"881105": "煤炭开采加工",
|
|
49
|
-
"881107": "油气开采及服务",
|
|
50
|
-
"881108": "化学原料",
|
|
51
|
-
"881109": "化学制品",
|
|
52
|
-
"881110": "化工合成材料",
|
|
53
|
-
"881112": "钢铁",
|
|
54
|
-
"881114": "金属新材料",
|
|
55
|
-
"881115": "建筑材料",
|
|
56
|
-
"881116": "建筑装饰",
|
|
57
|
-
"881117": "通用设备",
|
|
58
|
-
"881118": "专用设备",
|
|
59
|
-
"881119": "仪器仪表",
|
|
60
|
-
"881120": "电力设备",
|
|
61
|
-
"881121": "半导体及元件",
|
|
62
|
-
"881122": "光学光电子",
|
|
63
|
-
"881123": "其他电子",
|
|
64
|
-
"881124": "消费电子",
|
|
65
|
-
"881125": "汽车整车",
|
|
66
|
-
"881126": "汽车零部件",
|
|
67
|
-
"881127": "非汽车交运",
|
|
68
|
-
"881128": "汽车服务",
|
|
69
|
-
"881129": "通信设备",
|
|
70
|
-
"881130": "计算机设备",
|
|
71
|
-
"881131": "白色家电",
|
|
72
|
-
"881132": "黑色家电",
|
|
73
|
-
"881133": "饮料制造",
|
|
74
|
-
"881134": "食品加工制造",
|
|
75
|
-
"881135": "纺织制造",
|
|
76
|
-
"881136": "服装家纺",
|
|
77
|
-
"881137": "造纸",
|
|
78
|
-
"881138": "包装印刷",
|
|
79
|
-
"881139": "家用轻工",
|
|
80
|
-
"881140": "化学制药",
|
|
81
|
-
"881141": "中药",
|
|
82
|
-
"881142": "生物制品",
|
|
83
|
-
"881143": "医药商业",
|
|
84
|
-
"881144": "医疗器械",
|
|
85
|
-
"881145": "电力",
|
|
86
|
-
"881146": "燃气",
|
|
87
|
-
"881148": "港口航运",
|
|
88
|
-
"881149": "公路铁路运输",
|
|
89
|
-
"881151": "机场航运",
|
|
90
|
-
"881152": "物流",
|
|
91
|
-
"881153": "房地产开发",
|
|
92
|
-
"881155": "银行",
|
|
93
|
-
"881156": "保险及其他",
|
|
94
|
-
"881157": "证券",
|
|
95
|
-
"881158": "零售",
|
|
96
|
-
"881159": "贸易",
|
|
97
|
-
"881160": "景点及旅游",
|
|
98
|
-
"881161": "酒店及餐饮",
|
|
99
|
-
"881162": "通信服务",
|
|
100
|
-
"881163": "计算机应用",
|
|
101
|
-
"881164": "传媒",
|
|
102
|
-
"881165": "综合",
|
|
103
|
-
"881166": "国防军工",
|
|
104
|
-
"881167": "非金属材料",
|
|
105
|
-
"881168": "工业金属",
|
|
106
|
-
"881169": "贵金属",
|
|
107
|
-
"881170": "小金属",
|
|
108
|
-
"881171": "自动化设备",
|
|
109
|
-
"881172": "电子化学品",
|
|
110
|
-
"881173": "小家电",
|
|
111
|
-
"881174": "厨卫电器",
|
|
112
|
-
"881175": "医疗服务",
|
|
113
|
-
"881176": "房地产服务",
|
|
114
|
-
"881177": "互联网电商",
|
|
115
|
-
"881178": "教育",
|
|
116
|
-
"881179": "其他社会服务",
|
|
117
|
-
"881180": "石油加工贸易",
|
|
118
|
-
"881181": "环保",
|
|
119
|
-
"881182": "美容护理",
|
|
120
|
-
"881207": "元件", # 20240719
|
|
121
|
-
"881266": "橡胶制品", # 20240719
|
|
122
|
-
"884001": "种子生产",
|
|
123
|
-
"884002": "粮食种植",
|
|
124
|
-
"884003": "其他种植业",
|
|
125
|
-
"884004": "林业",
|
|
126
|
-
"884005": "海洋捕捞",
|
|
127
|
-
"884006": "水产养殖",
|
|
128
|
-
"884007": "畜禽养殖",
|
|
129
|
-
"884008": "饲料",
|
|
130
|
-
"884009": "果蔬加工",
|
|
131
|
-
"884010": "粮油加工",
|
|
132
|
-
"884011": "其他农产品加工",
|
|
133
|
-
"884012": "农业综合",
|
|
134
|
-
"884013": "动物保健",
|
|
135
|
-
"884014": "煤炭开采",
|
|
136
|
-
"884015": "焦炭加工",
|
|
137
|
-
"884016": "油气开采",
|
|
138
|
-
"884018": "油服工程",
|
|
139
|
-
"884020": "石油加工",
|
|
140
|
-
"884021": "油品石化贸易",
|
|
141
|
-
"884022": "纯碱",
|
|
142
|
-
"884023": "氯碱",
|
|
143
|
-
"884024": "无机盐",
|
|
144
|
-
"884025": "其他化学原料",
|
|
145
|
-
"884026": "氮肥",
|
|
146
|
-
"884027": "磷肥及磷化工",
|
|
147
|
-
"884028": "农药",
|
|
148
|
-
"884030": "涂料油墨",
|
|
149
|
-
"884031": "钾肥",
|
|
150
|
-
"884032": "民爆用品",
|
|
151
|
-
"884033": "纺织化学用品",
|
|
152
|
-
"884034": "其他化学制品",
|
|
153
|
-
"884035": "复合肥",
|
|
154
|
-
"884036": "氟化工",
|
|
155
|
-
"884039": "聚氨酯",
|
|
156
|
-
"884041": "涤纶",
|
|
157
|
-
"884043": "粘胶",
|
|
158
|
-
"884044": "其他纤维",
|
|
159
|
-
"884045": "氨纶",
|
|
160
|
-
"884046": "其他塑料制品",
|
|
161
|
-
"884048": "改性塑料",
|
|
162
|
-
"884050": "其他橡胶制品",
|
|
163
|
-
"884051": "炭黑",
|
|
164
|
-
"884052": "普钢",
|
|
165
|
-
"884053": "铝",
|
|
166
|
-
"884054": "铜",
|
|
167
|
-
"884055": "铅锌",
|
|
168
|
-
"884056": "其他金属新材料",
|
|
169
|
-
"884057": "磁性材料",
|
|
170
|
-
"884058": "非金属材料Ⅲ",
|
|
171
|
-
"884059": "玻璃玻纤",
|
|
172
|
-
"884060": "水泥",
|
|
173
|
-
"884062": "其他建材",
|
|
174
|
-
"884063": "耐火材料",
|
|
175
|
-
"884064": "管材",
|
|
176
|
-
"884065": "装饰园林",
|
|
177
|
-
"884066": "房屋建设",
|
|
178
|
-
"884067": "基础建设",
|
|
179
|
-
"884068": "专业工程",
|
|
180
|
-
"884069": "机床工具",
|
|
181
|
-
"884071": "磨具磨料",
|
|
182
|
-
"884073": "制冷空调设备",
|
|
183
|
-
"884074": "其他通用设备",
|
|
184
|
-
"884075": "金属制品",
|
|
185
|
-
"884076": "纺织服装设备",
|
|
186
|
-
"884077": "工程机械",
|
|
187
|
-
"884078": "农用机械",
|
|
188
|
-
"884080": "能源及重型设备",
|
|
189
|
-
"884081": "印刷包装机械",
|
|
190
|
-
"884082": "其他专用设备",
|
|
191
|
-
"884083": "楼宇设备",
|
|
192
|
-
"884084": "环保设备",
|
|
193
|
-
"884085": "电机",
|
|
194
|
-
"884086": "电气自控设备",
|
|
195
|
-
"884088": "输变电设备",
|
|
196
|
-
"884089": "线缆部件及其他",
|
|
197
|
-
"884090": "分立器件",
|
|
198
|
-
"884091": "半导体材料",
|
|
199
|
-
"884092": "印制电路板",
|
|
200
|
-
"884093": "被动元件",
|
|
201
|
-
"884094": "面板",
|
|
202
|
-
"884095": "LED",
|
|
203
|
-
"884096": "光学元件",
|
|
204
|
-
"884098": "消费电子零部件及组装",
|
|
205
|
-
"884099": "乘用车",
|
|
206
|
-
"884100": "商用载货车",
|
|
207
|
-
"884101": "商用载客车",
|
|
208
|
-
"884105": "轨交设备",
|
|
209
|
-
"884106": "其他交运设备",
|
|
210
|
-
"884107": "汽车服务Ⅲ",
|
|
211
|
-
"884112": "冰洗",
|
|
212
|
-
"884113": "空调",
|
|
213
|
-
"884115": "小家电Ⅲ",
|
|
214
|
-
"884116": "其他白色家电",
|
|
215
|
-
"884117": "彩电",
|
|
216
|
-
"884118": "其他黑色家电",
|
|
217
|
-
"884119": "其他酒类",
|
|
218
|
-
"884120": "软饮料",
|
|
219
|
-
"884123": "肉制品",
|
|
220
|
-
"884124": "调味发酵品",
|
|
221
|
-
"884125": "乳品",
|
|
222
|
-
"884126": "其他食品",
|
|
223
|
-
"884128": "棉纺",
|
|
224
|
-
"884130": "印染",
|
|
225
|
-
"884131": "辅料",
|
|
226
|
-
"884132": "其他纺织",
|
|
227
|
-
"884136": "鞋帽及其他",
|
|
228
|
-
"884137": "家纺",
|
|
229
|
-
"884139": "家具",
|
|
230
|
-
"884140": "其他家用轻工",
|
|
231
|
-
"884141": "饰品",
|
|
232
|
-
"884142": "文娱用品",
|
|
233
|
-
"884143": "原料药",
|
|
234
|
-
"884144": "化学制剂",
|
|
235
|
-
"884145": "医疗设备",
|
|
236
|
-
"884146": "火电",
|
|
237
|
-
"884147": "水电",
|
|
238
|
-
"884149": "热力",
|
|
239
|
-
"884150": "新能源发电",
|
|
240
|
-
"884152": "燃气Ⅲ",
|
|
241
|
-
"884153": "港口",
|
|
242
|
-
"884154": "高速公路",
|
|
243
|
-
"884155": "铁路运输",
|
|
244
|
-
"884156": "机场",
|
|
245
|
-
"884157": "航空运输",
|
|
246
|
-
"884158": "多元金融",
|
|
247
|
-
"884159": "保险",
|
|
248
|
-
"884160": "百货零售",
|
|
249
|
-
"884161": "专业连锁",
|
|
250
|
-
"884162": "商业物业经营",
|
|
251
|
-
"884163": "人工景点",
|
|
252
|
-
"884164": "自然景点",
|
|
253
|
-
"884165": "旅游综合",
|
|
254
|
-
"884167": "酒店",
|
|
255
|
-
"884168": "餐饮",
|
|
256
|
-
"884172": "有线电视网络",
|
|
257
|
-
"884173": "通信服务Ⅲ",
|
|
258
|
-
"884174": "软件开发",
|
|
259
|
-
"884176": "出版",
|
|
260
|
-
"884177": "影视院线",
|
|
261
|
-
"884178": "广告营销",
|
|
262
|
-
"884179": "其他传媒",
|
|
263
|
-
"884180": "航天装备",
|
|
264
|
-
"884181": "航空装备",
|
|
265
|
-
"884182": "地面兵装",
|
|
266
|
-
"884183": "航海装备",
|
|
267
|
-
"884184": "特钢",
|
|
268
|
-
"884185": "贵金属Ⅲ",
|
|
269
|
-
"884186": "其他小金属",
|
|
270
|
-
"884188": "白酒",
|
|
271
|
-
"884189": "啤酒",
|
|
272
|
-
"884191": "航运",
|
|
273
|
-
"884192": "仪器仪表Ⅲ",
|
|
274
|
-
"884193": "其他电子Ⅲ",
|
|
275
|
-
"884194": "汽车零部件Ⅲ",
|
|
276
|
-
"884195": "造纸Ⅲ",
|
|
277
|
-
"884197": "中药Ⅲ",
|
|
278
|
-
"884199": "医药商业Ⅲ",
|
|
279
|
-
"884200": "公交",
|
|
280
|
-
"884201": "物流Ⅲ",
|
|
281
|
-
"884202": "住宅开发",
|
|
282
|
-
"884203": "产业地产",
|
|
283
|
-
"884205": "证券Ⅲ",
|
|
284
|
-
"884206": "贸易Ⅲ",
|
|
285
|
-
"884207": "计算机设备Ⅲ",
|
|
286
|
-
"884208": "综合Ⅲ",
|
|
287
|
-
"884209": "钛白粉",
|
|
288
|
-
"884210": "食品及饲料添加剂",
|
|
289
|
-
"884211": "有机硅",
|
|
290
|
-
"884212": "合成树脂",
|
|
291
|
-
"884213": "膜材料",
|
|
292
|
-
"884214": "冶钢原料",
|
|
293
|
-
"884215": "稀土",
|
|
294
|
-
"884216": "能源金属",
|
|
295
|
-
"884217": "工程咨询服务",
|
|
296
|
-
"884218": "机器人",
|
|
297
|
-
"884219": "工控设备",
|
|
298
|
-
"884220": "激光设备",
|
|
299
|
-
"884221": "其他自动化设备",
|
|
300
|
-
"884222": "光伏设备",
|
|
301
|
-
"884223": "风电设备",
|
|
302
|
-
"884224": "电池",
|
|
303
|
-
"884225": "其他电源设备",
|
|
304
|
-
"884226": "集成电路设计",
|
|
305
|
-
"884227": "集成电路制造",
|
|
306
|
-
"884228": "集成电路封测",
|
|
307
|
-
"884229": "半导体设备",
|
|
308
|
-
"884230": "品牌消费电子",
|
|
309
|
-
"884231": "电子化学品Ⅲ",
|
|
310
|
-
"884232": "厨卫电器Ⅲ",
|
|
311
|
-
"884233": "休闲食品",
|
|
312
|
-
"884234": "服装",
|
|
313
|
-
"884235": "印刷",
|
|
314
|
-
"884236": "包装",
|
|
315
|
-
"884237": "瓷砖地板",
|
|
316
|
-
"884238": "血液制品",
|
|
317
|
-
"884239": "疫苗",
|
|
318
|
-
"884240": "其他生物制品",
|
|
319
|
-
"884242": "医疗耗材",
|
|
320
|
-
"884243": "体外诊断",
|
|
321
|
-
"884244": "医疗研发外包",
|
|
322
|
-
"884245": "其他医疗服务",
|
|
323
|
-
"884246": "电能综合服务",
|
|
324
|
-
"884247": "商业地产",
|
|
325
|
-
"884248": "房地产服务Ⅲ",
|
|
326
|
-
"884249": "国有大型银行",
|
|
327
|
-
"884250": "股份制银行",
|
|
328
|
-
"884251": "城商行",
|
|
329
|
-
"884252": "农商行",
|
|
330
|
-
"884253": "其他银行",
|
|
331
|
-
"884254": "旅游零售",
|
|
332
|
-
"884255": "互联网电商Ⅲ",
|
|
333
|
-
"884256": "教育Ⅲ",
|
|
334
|
-
"884257": "专业服务",
|
|
335
|
-
"884258": "体育",
|
|
336
|
-
"884259": "其他社会服务Ⅲ",
|
|
337
|
-
"884260": "游戏",
|
|
338
|
-
"884261": "数字媒体",
|
|
339
|
-
"884262": "通信网络设备及器件",
|
|
340
|
-
"884263": "通信线缆及配套",
|
|
341
|
-
"884264": "通信终端及配件",
|
|
342
|
-
"884265": "其他通信设备",
|
|
343
|
-
"884266": "军工电子",
|
|
344
|
-
"884267": "大气治理",
|
|
345
|
-
"884268": "水务及水治理",
|
|
346
|
-
"884269": "固废治理",
|
|
347
|
-
"884270": "综合环境治理",
|
|
348
|
-
"884271": "个护用品",
|
|
349
|
-
"884272": "化妆品",
|
|
350
|
-
"884273": "医疗美容",
|
|
351
|
-
"884274": "IT服务",
|
|
352
|
-
}
|
|
75
|
+
code_name_ths_map = _get_stock_board_industry_name_ths()
|
|
353
76
|
temp_df = pd.DataFrame.from_dict(code_name_ths_map, orient="index")
|
|
354
77
|
temp_df.reset_index(inplace=True)
|
|
355
|
-
temp_df.columns = ["
|
|
78
|
+
temp_df.columns = ["name", "code"]
|
|
356
79
|
temp_df = temp_df[
|
|
357
80
|
[
|
|
358
81
|
"name",
|
|
@@ -362,7 +85,7 @@ def stock_board_industry_name_ths() -> pd.DataFrame:
|
|
|
362
85
|
return temp_df
|
|
363
86
|
|
|
364
87
|
|
|
365
|
-
def stock_board_industry_info_ths(symbol: str = "
|
|
88
|
+
def stock_board_industry_info_ths(symbol: str = "半导体") -> pd.DataFrame:
|
|
366
89
|
"""
|
|
367
90
|
同花顺-板块-行业板块-板块简介
|
|
368
91
|
http://q.10jqka.com.cn/gn/detail/code/301558/
|
|
@@ -396,13 +119,13 @@ def stock_board_industry_info_ths(symbol: str = "半导体及元件") -> pd.Data
|
|
|
396
119
|
|
|
397
120
|
|
|
398
121
|
def stock_board_industry_index_ths(
|
|
399
|
-
symbol: str = "
|
|
122
|
+
symbol: str = "元件",
|
|
400
123
|
start_date: str = "20200101",
|
|
401
124
|
end_date: str = "20240108",
|
|
402
125
|
) -> pd.DataFrame:
|
|
403
126
|
"""
|
|
404
127
|
同花顺-板块-行业板块-指数数据
|
|
405
|
-
https://q.10jqka.com.cn/
|
|
128
|
+
https://q.10jqka.com.cn/thshy/detail/code/881270/
|
|
406
129
|
:param start_date: 开始时间
|
|
407
130
|
:type start_date: str
|
|
408
131
|
:param end_date: 结束时间
|
|
@@ -412,13 +135,16 @@ def stock_board_industry_index_ths(
|
|
|
412
135
|
:return: 指数数据
|
|
413
136
|
:rtype: pandas.DataFrame
|
|
414
137
|
"""
|
|
415
|
-
code_map =
|
|
416
|
-
code_map = dict(zip(code_map["name"].values, code_map["code"].values))
|
|
138
|
+
code_map = _get_stock_board_industry_name_ths()
|
|
417
139
|
symbol_code = code_map[symbol]
|
|
418
140
|
big_df = pd.DataFrame()
|
|
419
141
|
current_year = datetime.now().year
|
|
420
142
|
begin_year = int(start_date[:4])
|
|
421
143
|
tqdm = get_tqdm()
|
|
144
|
+
js_code = py_mini_racer.MiniRacer()
|
|
145
|
+
js_content = _get_file_content_ths("ths.js")
|
|
146
|
+
js_code.eval(js_content)
|
|
147
|
+
v_code = js_code.call("v")
|
|
422
148
|
for year in tqdm(range(begin_year, current_year + 1), leave=False):
|
|
423
149
|
url = f"https://d.10jqka.com.cn/v4/line/bk_{symbol_code}/01/{year}.js"
|
|
424
150
|
headers = {
|
|
@@ -426,9 +152,11 @@ def stock_board_industry_index_ths(
|
|
|
426
152
|
"Chrome/89.0.4389.90 Safari/537.36",
|
|
427
153
|
"Referer": "http://q.10jqka.com.cn",
|
|
428
154
|
"Host": "d.10jqka.com.cn",
|
|
155
|
+
"Cookie": f"v={v_code}",
|
|
429
156
|
}
|
|
430
157
|
r = requests.get(url, headers=headers)
|
|
431
158
|
data_text = r.text
|
|
159
|
+
|
|
432
160
|
try:
|
|
433
161
|
demjson.decode(data_text[data_text.find("{") : -1])
|
|
434
162
|
except: # noqa: E722
|
|
@@ -610,13 +338,10 @@ if __name__ == "__main__":
|
|
|
610
338
|
print(stock_board_industry_info_ths_df)
|
|
611
339
|
|
|
612
340
|
stock_board_industry_index_ths_df = stock_board_industry_index_ths(
|
|
613
|
-
symbol="
|
|
341
|
+
symbol="元件", start_date="20240101", end_date="20240718"
|
|
614
342
|
)
|
|
615
343
|
print(stock_board_industry_index_ths_df)
|
|
616
344
|
|
|
617
|
-
stock_ipo_benefit_ths_df = stock_ipo_benefit_ths()
|
|
618
|
-
print(stock_ipo_benefit_ths_df)
|
|
619
|
-
|
|
620
345
|
stock_board_industry_summary_ths_df = stock_board_industry_summary_ths()
|
|
621
346
|
print(stock_board_industry_summary_ths_df)
|
|
622
347
|
|
|
@@ -624,3 +349,6 @@ if __name__ == "__main__":
|
|
|
624
349
|
print(stock)
|
|
625
350
|
stock_board_industry_index_ths_df = stock_board_industry_index_ths(symbol=stock)
|
|
626
351
|
print(stock_board_industry_index_ths_df)
|
|
352
|
+
|
|
353
|
+
stock_ipo_benefit_ths_df = stock_ipo_benefit_ths()
|
|
354
|
+
print(stock_ipo_benefit_ths_df)
|
|
@@ -12,12 +12,13 @@ https://data.10jqka.com.cn/funds/hyzjl/#refCountId=data_55f13c2c_254
|
|
|
12
12
|
同花顺-数据中心-资金流向-打单追踪
|
|
13
13
|
https://data.10jqka.com.cn/funds/ddzz/#refCountId=data_55f13c2c_254
|
|
14
14
|
"""
|
|
15
|
+
|
|
15
16
|
from io import StringIO
|
|
16
17
|
|
|
17
18
|
import pandas as pd
|
|
18
19
|
import requests
|
|
19
20
|
from bs4 import BeautifulSoup
|
|
20
|
-
|
|
21
|
+
import py_mini_racer
|
|
21
22
|
from akshare.utils.tqdm import get_tqdm
|
|
22
23
|
|
|
23
24
|
from akshare.datasets import get_ths_js
|
|
@@ -218,7 +219,9 @@ def stock_fund_flow_concept(symbol: str = "即时") -> pd.DataFrame:
|
|
|
218
219
|
big_df["行业-涨跌幅"] = big_df["行业-涨跌幅"].str.strip("%")
|
|
219
220
|
big_df["领涨股-涨跌幅"] = big_df["领涨股-涨跌幅"].str.strip("%")
|
|
220
221
|
big_df["行业-涨跌幅"] = pd.to_numeric(big_df["行业-涨跌幅"], errors="coerce")
|
|
221
|
-
big_df["领涨股-涨跌幅"] = pd.to_numeric(
|
|
222
|
+
big_df["领涨股-涨跌幅"] = pd.to_numeric(
|
|
223
|
+
big_df["领涨股-涨跌幅"], errors="coerce"
|
|
224
|
+
)
|
|
222
225
|
else:
|
|
223
226
|
big_df.columns = [
|
|
224
227
|
"序号",
|
|
@@ -320,7 +323,9 @@ def stock_fund_flow_industry(symbol: str = "即时") -> pd.DataFrame:
|
|
|
320
323
|
big_df["行业-涨跌幅"] = big_df["行业-涨跌幅"].str.strip("%")
|
|
321
324
|
big_df["领涨股-涨跌幅"] = big_df["领涨股-涨跌幅"].str.strip("%")
|
|
322
325
|
big_df["行业-涨跌幅"] = pd.to_numeric(big_df["行业-涨跌幅"], errors="coerce")
|
|
323
|
-
big_df["领涨股-涨跌幅"] = pd.to_numeric(
|
|
326
|
+
big_df["领涨股-涨跌幅"] = pd.to_numeric(
|
|
327
|
+
big_df["领涨股-涨跌幅"], errors="coerce"
|
|
328
|
+
)
|
|
324
329
|
else:
|
|
325
330
|
big_df.columns = [
|
|
326
331
|
"序号",
|