Python免费获取个股流动股东源码Tushare
import os
import tushare as ts
import pandas as pd
import re
import datetime
import time
token="https://tushare.pro/register?reg=521665"
pro=ts.pro_api()
rss="D:cnholder_LT"
cnlst="D:inxstk_base.csv"
def single_down(xcod):
tim0="10191205"
time_temp = datetime.datetime.now() - datetime.timedelta(days=1)
end_dt = time_temp.strftime("%Y%m%d")
fss=rss+xcod+".csv"
print(" ",fss);
xfg=os.path.exists(fss);xd0=[];
if xfg:
xd0=pd.read_csv(fss,index_col=["trade_date"],encoding="gbk")
if len(xd0)<1:
os.remove(fss)
tim0="10191205"
xd0=[]
else:
xd0=xd0.sort_index(ascending=False);
_xt=xd0.index[0];
s2=str(_xt);tim0=s2.split(" ")[0]
xd0=xd0.reset_index()
try:
xd=pro.top10_floatholders(ts_code=xcod,start_date=tim0,end_date=end_dt);
if xd is not None:
if (len(xd0)>0):
xd2 =pd.concat([xd0,xd],axis=0,join="inner")
xd2.drop_duplicates(subset="trade_date", keep="last", inplace=True);
xd=xd2;
xd.to_csv(fss,encoding="gbk",index=False)
except IOError:
pass #skip,error
t1= datetime.datetime.now()
df=pd.read_csv(cnlst,encoding="gbk")
tk_n=len(df)
for i in range(0,tk_n,9):
print(i)
ts.set_token(token)
dfi=df[i:i+9]
for xcod in dfi["ts_code"]:
print(i,xcod)
single_down(xcod)
time.sleep(59)
t2= datetime.datetime.now()
print(t2-t1)