tushare 1.4.17__py3-none-any.whl → 1.4.19__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.
- tushare/__init__.py +1 -1
- tushare/stock/rtq.py +137 -127
- {tushare-1.4.17.dist-info → tushare-1.4.19.dist-info}/METADATA +5 -1
- {tushare-1.4.17.dist-info → tushare-1.4.19.dist-info}/RECORD +7 -7
- {tushare-1.4.17.dist-info → tushare-1.4.19.dist-info}/LICENSE +0 -0
- {tushare-1.4.17.dist-info → tushare-1.4.19.dist-info}/WHEEL +0 -0
- {tushare-1.4.17.dist-info → tushare-1.4.19.dist-info}/top_level.txt +0 -0
tushare/__init__.py
CHANGED
tushare/stock/rtq.py
CHANGED
@@ -249,146 +249,155 @@ def get_stock_all_a_dc(page_count: Optional[int] = None,
|
|
249
249
|
22、60日涨跌幅:60DAY
|
250
250
|
23、年初至今涨跌幅:1YEAR
|
251
251
|
"""
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
"
|
276
|
-
|
277
|
-
|
278
|
-
"成交量",
|
279
|
-
"成交额",
|
280
|
-
"振幅",
|
281
|
-
"换手率",
|
282
|
-
"市盈率-动态",
|
283
|
-
"量比",
|
284
|
-
"5分钟涨跌",
|
285
|
-
"代码",
|
286
|
-
"_",
|
287
|
-
"名称",
|
288
|
-
"最高",
|
289
|
-
"最低",
|
290
|
-
"今开",
|
291
|
-
"昨收",
|
292
|
-
"总市值",
|
293
|
-
"流通市值",
|
294
|
-
"涨速",
|
295
|
-
"市净率",
|
296
|
-
"60日涨跌幅",
|
297
|
-
"年初至今涨跌幅",
|
298
|
-
"-",
|
299
|
-
"-",
|
300
|
-
"-",
|
301
|
-
"-",
|
302
|
-
"-",
|
303
|
-
"-",
|
304
|
-
"-",
|
305
|
-
]
|
306
|
-
temp_df.reset_index(inplace=True)
|
307
|
-
# temp_df["index"] = temp_df.index + 1
|
308
|
-
# temp_df.rename(columns={"index": "序号"}, inplace=True)
|
309
|
-
temp_df = temp_df[
|
310
|
-
[
|
311
|
-
# "序号",
|
312
|
-
"代码",
|
313
|
-
"名称",
|
252
|
+
dfs = []
|
253
|
+
for page in range(1,500):
|
254
|
+
url = "http://82.push2.eastmoney.com/api/qt/clist/get"
|
255
|
+
params = {
|
256
|
+
"pn": page,
|
257
|
+
"pz": "200",
|
258
|
+
"po": "1",
|
259
|
+
"np": "1",
|
260
|
+
"ut": "bd1d9ddb04089700cf9c27f6f7426281",
|
261
|
+
"fltt": "2",
|
262
|
+
"invt": "2",
|
263
|
+
"fid": "f3",
|
264
|
+
"fs": "m:0 t:6,m:0 t:80,m:1 t:2,m:1 t:23,m:0 t:81 s:2048",
|
265
|
+
"fields": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152",
|
266
|
+
"_": "1623833739532",
|
267
|
+
}
|
268
|
+
if page_count:
|
269
|
+
params["pz"] = 20
|
270
|
+
r = requests.get(url, params=params, proxies=proxies)
|
271
|
+
data_json = r.json()
|
272
|
+
if not data_json["data"]:
|
273
|
+
break
|
274
|
+
# return pd.DataFrame()
|
275
|
+
temp_df = pd.DataFrame(data_json["data"]["diff"])
|
276
|
+
temp_df.columns = [
|
277
|
+
"_",
|
314
278
|
"最新价",
|
315
279
|
"涨跌幅",
|
316
280
|
"涨跌额",
|
317
281
|
"成交量",
|
318
282
|
"成交额",
|
319
283
|
"振幅",
|
284
|
+
"换手率",
|
285
|
+
"市盈率-动态",
|
286
|
+
"量比",
|
287
|
+
"5分钟涨跌",
|
288
|
+
"代码",
|
289
|
+
"_",
|
290
|
+
"名称",
|
320
291
|
"最高",
|
321
292
|
"最低",
|
322
293
|
"今开",
|
323
294
|
"昨收",
|
324
|
-
"量比",
|
325
|
-
"换手率",
|
326
|
-
"市盈率-动态",
|
327
|
-
"市净率",
|
328
295
|
"总市值",
|
329
296
|
"流通市值",
|
330
297
|
"涨速",
|
331
|
-
"
|
298
|
+
"市净率",
|
332
299
|
"60日涨跌幅",
|
333
300
|
"年初至今涨跌幅",
|
301
|
+
"-",
|
302
|
+
"-",
|
303
|
+
"-",
|
304
|
+
"-",
|
305
|
+
"-",
|
306
|
+
"-",
|
307
|
+
"-",
|
308
|
+
]
|
309
|
+
temp_df.reset_index(inplace=True)
|
310
|
+
# temp_df["index"] = temp_df.index + 1
|
311
|
+
# temp_df.rename(columns={"index": "序号"}, inplace=True)
|
312
|
+
temp_df = temp_df[
|
313
|
+
[
|
314
|
+
# "序号",
|
315
|
+
"代码",
|
316
|
+
"名称",
|
317
|
+
"最新价",
|
318
|
+
"涨跌幅",
|
319
|
+
"涨跌额",
|
320
|
+
"成交量",
|
321
|
+
"成交额",
|
322
|
+
"振幅",
|
323
|
+
"最高",
|
324
|
+
"最低",
|
325
|
+
"今开",
|
326
|
+
"昨收",
|
327
|
+
"量比",
|
328
|
+
"换手率",
|
329
|
+
"市盈率-动态",
|
330
|
+
"市净率",
|
331
|
+
"总市值",
|
332
|
+
"流通市值",
|
333
|
+
"涨速",
|
334
|
+
"5分钟涨跌",
|
335
|
+
"60日涨跌幅",
|
336
|
+
"年初至今涨跌幅",
|
337
|
+
]
|
334
338
|
]
|
335
|
-
]
|
336
339
|
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
340
|
+
temp_df["代码"] = temp_df["代码"].apply(format_stock_code)
|
341
|
+
temp_df["最新价"] = pd.to_numeric(temp_df["最新价"], errors="coerce")
|
342
|
+
temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce")
|
343
|
+
temp_df["涨跌额"] = pd.to_numeric(temp_df["涨跌额"], errors="coerce")
|
344
|
+
temp_df["成交量"] = pd.to_numeric(temp_df["成交量"], errors="coerce")
|
345
|
+
temp_df["成交额"] = pd.to_numeric(temp_df["成交额"], errors="coerce")
|
346
|
+
temp_df["振幅"] = pd.to_numeric(temp_df["振幅"], errors="coerce")
|
347
|
+
temp_df["最高"] = pd.to_numeric(temp_df["最高"], errors="coerce")
|
348
|
+
temp_df["最低"] = pd.to_numeric(temp_df["最低"], errors="coerce")
|
349
|
+
temp_df["今开"] = pd.to_numeric(temp_df["今开"], errors="coerce")
|
350
|
+
temp_df["昨收"] = pd.to_numeric(temp_df["昨收"], errors="coerce")
|
351
|
+
temp_df["量比"] = pd.to_numeric(temp_df["量比"], errors="coerce")
|
352
|
+
temp_df["换手率"] = pd.to_numeric(temp_df["换手率"], errors="coerce")
|
353
|
+
temp_df["市盈率-动态"] = pd.to_numeric(temp_df["市盈率-动态"], errors="coerce")
|
354
|
+
temp_df["市净率"] = pd.to_numeric(temp_df["市净率"], errors="coerce")
|
355
|
+
temp_df["总市值"] = pd.to_numeric(temp_df["总市值"], errors="coerce")
|
356
|
+
temp_df["流通市值"] = pd.to_numeric(temp_df["流通市值"], errors="coerce")
|
357
|
+
temp_df["涨速"] = pd.to_numeric(temp_df["涨速"], errors="coerce")
|
358
|
+
temp_df["5分钟涨跌"] = pd.to_numeric(temp_df["5分钟涨跌"], errors="coerce")
|
359
|
+
temp_df["60日涨跌幅"] = pd.to_numeric(temp_df["60日涨跌幅"], errors="coerce")
|
360
|
+
temp_df["年初至今涨跌幅"] = pd.to_numeric(temp_df["年初至今涨跌幅"], errors="coerce")
|
361
|
+
temp_df.columns = [
|
362
|
+
# "RANK",
|
363
|
+
"TS_CODE",
|
364
|
+
"NAME",
|
365
|
+
"CLOSE",
|
366
|
+
"PCT_CHANGE",
|
367
|
+
"CHANGE",
|
368
|
+
"VOLUME",
|
369
|
+
"AMOUNT",
|
370
|
+
"SWING",
|
371
|
+
"HIGH",
|
372
|
+
"LOW",
|
373
|
+
"OPEN",
|
374
|
+
"PRE_CLOSE",
|
375
|
+
"VOL_RATIO",
|
376
|
+
"TURNOVER_RATE",
|
377
|
+
"PE",
|
378
|
+
"PB",
|
379
|
+
"TOTAL_MV",
|
380
|
+
"FLOAT_MV",
|
381
|
+
"RISE",
|
382
|
+
"5MIN",
|
383
|
+
"60DAY",
|
384
|
+
"1YEAR",
|
385
|
+
]
|
386
|
+
# 指定要转换为 float 类型的列
|
387
|
+
cols_to_convert = ['CLOSE', 'PCT_CHANGE', 'CHANGE', "VOLUME", "AMOUNT", "SWING",
|
388
|
+
'HIGH', "LOW", "OPEN", "PRE_CLOSE", "VOL_RATIO", "TURNOVER_RATE", "PE", "PB", "TOTAL_MV", "FLOAT_MV",
|
389
|
+
"RISE", "5MIN", "60DAY", "1YEAR"
|
390
|
+
]
|
391
|
+
# 使用 to_numeric() 方法将指定的列转换为 float 类型,并将非数值类型的数据转换为 NaN
|
392
|
+
temp_df[cols_to_convert] = temp_df[cols_to_convert].apply(pd.to_numeric, errors='coerce')
|
393
|
+
dfs.append(
|
394
|
+
temp_df
|
395
|
+
)
|
396
|
+
if page_count:
|
397
|
+
break
|
398
|
+
result_df = pd.concat(dfs, ignore_index=True)
|
390
399
|
# 使用 fillna() 方法将 NaN 值替换为 0
|
391
|
-
df_filled =
|
400
|
+
df_filled = result_df.fillna(0)
|
392
401
|
df_sorted = df_filled.sort_values(by='PCT_CHANGE', ascending=False).reset_index(drop=True)
|
393
402
|
return df_sorted
|
394
403
|
|
@@ -636,16 +645,17 @@ def format_str_to_float(x):
|
|
636
645
|
|
637
646
|
if __name__ == '__main__':
|
638
647
|
# df = realtime_quote(ts_code="000688.SH,000010.SH,000012.SH,399005.SZ", src="sina")
|
639
|
-
# df = realtime_list(src="
|
640
|
-
|
648
|
+
# df = realtime_list(src="dc", page_count=1)
|
649
|
+
df = realtime_list(src="dc")
|
650
|
+
print(df)
|
641
651
|
# ts_code = '399005.SZ'
|
642
652
|
# ts_code = '000001.SZ'
|
643
653
|
# # ts_code = '836149.BJ'
|
644
654
|
# # ts_code = '600000.SH'
|
645
655
|
# # ts_code = '000001.SH'
|
646
656
|
# # ts_code = '000010.SH'
|
647
|
-
ts_code = '600148.SH'
|
648
|
-
df = realtime_quote(src="dc", ts_code=ts_code)
|
649
|
-
print(df)
|
657
|
+
# ts_code = '600148.SH'
|
658
|
+
# df = realtime_quote(src="dc", ts_code=ts_code)
|
659
|
+
# print(df)
|
650
660
|
|
651
661
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: tushare
|
3
|
-
Version: 1.4.
|
3
|
+
Version: 1.4.19
|
4
4
|
Summary: A utility for crawling historical and Real-time Quotes data of China stocks
|
5
5
|
Home-page: https://tushare.pro
|
6
6
|
Author: Jimmy Liu
|
@@ -80,6 +80,10 @@ return::
|
|
80
80
|
|
81
81
|
Log
|
82
82
|
--------------
|
83
|
+
1.4.19
|
84
|
+
-------
|
85
|
+
- 修复 realtime_list 返回数据不全的问题
|
86
|
+
-------
|
83
87
|
1.4.17
|
84
88
|
-------
|
85
89
|
- 修复 920 开头更改是北交所
|
@@ -1,4 +1,4 @@
|
|
1
|
-
tushare/__init__.py,sha256=
|
1
|
+
tushare/__init__.py,sha256=1SENOQgZRlssTEGodSX6PtPoZJR3i6UOPwCegihtvRA,4778
|
2
2
|
tushare/bond/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
3
|
tushare/bond/bonds.py,sha256=PJM0xDiWZDpOPwDtbEU9PdP0M_Gu0c599YuB1rbZ3r8,232
|
4
4
|
tushare/coins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -35,7 +35,7 @@ tushare/stock/news_vars.py,sha256=CQ18hvyoeScelBCqKgF_rgAufoEALAUT8y_LERvZKHk,45
|
|
35
35
|
tushare/stock/newsevent.py,sha256=STR7C8MjtZlaXTCG0QNaojBuK4-oxP_8hT7ZIvRpbiI,6944
|
36
36
|
tushare/stock/ref_vars.py,sha256=MIxor-2rISl65I32vUzC-z7ZC_QFzG4sxOKDyjLWuU4,4449
|
37
37
|
tushare/stock/reference.py,sha256=x_HZlrP58T-5OTZ7SLdf2Dh9THj1h7cT4wcIp42IHFI,38227
|
38
|
-
tushare/stock/rtq.py,sha256=
|
38
|
+
tushare/stock/rtq.py,sha256=EPzVDbF0R6ojVrR17neEieR8-q5-ywcargLH0bFip1U,23949
|
39
39
|
tushare/stock/rtq_vars.py,sha256=V6LeJkSP76z8veRfP_mGiQ63V5YBHoTMaqUA5hSBWh4,4200
|
40
40
|
tushare/stock/shibor.py,sha256=Fx9OUZ429kz6l7ZdaYSD6p_X79ud69PDM9EZogm8xCY,6422
|
41
41
|
tushare/stock/trading.py,sha256=3bvM4pexEYW-uGGEL7g6Vkte4sqGC1iYO6dC8mGLSdM,55619
|
@@ -72,8 +72,8 @@ tushare/util/verify_token.py,sha256=cuV3RErWbOC318NANCYL6K1LKZ3wSAL2yMwZHA7tD3s,
|
|
72
72
|
tushare/util/protobuf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
73
73
|
tushare/util/protobuf/funcs.py,sha256=UCdK8FxTyjPZsNzoEeXqYzqrQXUmRMvW5hua6GPA66A,779
|
74
74
|
tushare/util/protobuf/response_pb2.py,sha256=vJH9ONkDuJlg6y-q1PvuDZoviKrK7hzNtMieQHK45DI,11347
|
75
|
-
tushare-1.4.
|
76
|
-
tushare-1.4.
|
77
|
-
tushare-1.4.
|
78
|
-
tushare-1.4.
|
79
|
-
tushare-1.4.
|
75
|
+
tushare-1.4.19.dist-info/LICENSE,sha256=C2j55UI0Ul-1-wA1-rn7OaY6b3vGl4YukiyvYzHsU9o,1503
|
76
|
+
tushare-1.4.19.dist-info/METADATA,sha256=po7Jtf-7liUnFFassvlJQCrQalR5s-cLnKAjxwxWHpc,3108
|
77
|
+
tushare-1.4.19.dist-info/WHEEL,sha256=Wyh-_nZ0DJYolHNn1_hMa4lM7uDedD_RGVwbmTjyItk,91
|
78
|
+
tushare-1.4.19.dist-info/top_level.txt,sha256=HHOxMuqc31KuAIcxpE0t5dAPMKbaiRtjsjTMFd7FlXI,8
|
79
|
+
tushare-1.4.19.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|