东方财富----千股千评数据,附程序代码

今天我在看东方财富官网的数据的时候发现东方财富是千股千评的数据提供了主力参与度信息,这个信息对于我们看股票,分析股票很有帮助,主力参与度越高,股票趋势越强,个股走势强。最近走势强的股票,主力参与度都大于70,这个数据值得我们分析。

我们提供的程序仅仅用于交流学习,坚持爬虫原则

本内容来源自己的微信公众号,数据分析与运用

需要程序的关注下面公众微信号,数据分析与运用,回复千股千评就可以了,直接运行代码

我们看一下数据。我们将数据处理过后,通过主力参与度进行数据排序。

经过对比发现,主力参与度高的股票,走势的很强,主力控盘力度大,市场关注度高,我们随便看应该数据比如天齐锂业。在数据处理中我们构造股票的链接,直接点击就链接到了东方财富数据。

比如我们在看一下通威股份,中环股份等

我们看一下程序的获取,我们提供了全部的数据,还有主力控盘力度,市场参与度,关注度等数据,爬取这个页面的数据。

我们看程序的效果,想学习爬虫的可以看这个文章

我们看程序运行的效果

我们点击全部数据,看一下效果,我加入了进度条。

我们看保存的数据,我构建了股票链接

我们看一下其他数据,比如历史评分。我们输入股票代码比如603260

程序绘制的股票,方便分析

程序代码

import pandas as pdimport jsonimport jsonpathimport requestsfrom bs4 import BeautifulSoupfrom xml import etreeimport tkinter as tkimport akshare as akfrom finta import TAimport matplotlib.pyplot as pltimport mplfinance as mpfimport osfrom  datetime import datetimefrom tqdm import tqdmimport PySimpleGUI as sgroot=tk.Tk()root.title('东方财富千股千评数据系统')root.geometry('600x500')menumode=tk.Menu(root)stock_pj=tk.Menu(menumode)menumode.add_cascade(label='东方财富千股千评数据系统',menu=stock_pj)def plot_kines_figure(df1=None):    '''    df1数据    '''    macd=TA.MACD(df1)    sar=TA.SAR(df1)    df1.rename(columns={'date':'Date','open':'Open','close':'Close','high':'High','low':'Low','volume':'Volume'},inplace=True)    #时间格式转换    plt.rcParams['font.family']='SimHei'    plt.rcParams['axes.unicode_minus']=False    df1['Date']=pd.to_datetime(df1['Date'])    #出现设置索引    df1.set_index(['Date'],inplace=True)    #设置股票颜    mc=mpf.make_marketcolors(up='r',down='g',edge='i',volume='i')        #设置系统    s=mpf.make_mpf_style(marketcolors=mc)    add_plot=[mpf.make_addplot(macd['MACD'],panel=1,title='MACD',color='r'),mpf.make_addplot(macd['SIGNAL'],panel=1,color='y'),    mpf.make_addplot(sar,panel=0,title='SAR',type='scatter')]    #绘制股票图,5,10,20日均线    mpf.plot(df1,type='candle',style=s,addplot=add_plot,volume=True)    plt.show()def get_all_stock_data():    data=pd.DataFrame()    for i in tqdm(range(1,11)):        url='https://datacenter-web.eastmoney.com/api/data/v1/get'        params={            'callback':'jQuery112307356860297982217_1656654358932',            'sortColumns':'SECURITY_CODE',            'sortTypes':'1',            #获取全部数据500            'pageSize':'500',            'pageNumber':'{}'.format(i),            'reportName':'RPT_DMSK_TS_STOCKNEW',            'quoteColumns':'f2~01~SECURITY_CODE~CLOSE_PRICE,f8~01~SECURITY_CODE~TURNOVERRATE,f3~01~SECURITY_CODE~CHANGE_RATE,f9~01~SECURITY_CODE~PE_DYNAMIC',            'quoteType':'0',            'columns':'ALL',            'filter':'' ,            'token':'894050c76af8597a853f5b408b759f5d'        }        res=requests.get(url=url,params=params)        text=res.text[42:len(res.text)-2]        json_text=json.loads(text)        df=pd.DataFrame(json_text['result']['data'])        columns=['股票市场代码','股票代码','股票类型代码','交易日期','股票名称','市值','流通股','非流通股',        '收盘价','涨跌幅','市场交易代码','换手率%','主力成本','市盈率','20日收盘价','60日收盘价',        '机构参与度','类型','主力流入','主力流出','买卖比例','主力买卖比例','比例','30日比例','50日比例',        '综合评分','上升位数','目前排名','关注指数','市场类型代码']        df.columns=columns        #选择一些主要的数据        df1=df[['股票代码','交易日期','股票名称','收盘价','涨跌幅','主力成本','机构参与度',        '综合评分','上升位数','目前排名','关注指数']]        #构造股票链接        href_data=[]        for i in df['股票代码']:            href='https://data.eastmoney.com/stockdata/{}.html'.format(i)            href_data.append(href)        df1['股票链接']=href_data        data=pd.concat([data,df1],ignore_index=True)    df_data=data.sort_values(by='机构参与度',ascending=False,ignore_index=True)    print(df_data)    df_data.to_excel(r'C:\Users\Administrator\Desktop\千股千评.xlsx')#机构参与度def get_stock_jgcyd () -> pd.DataFrame:    '''    机构参与度    '''    symbol=sg.popup_get_text('输入股票代码比如603260')    url = f"https://data.eastmoney.com/stockcomment/api/{symbol}.json"    r = requests.get(url)    data_json = r.json()    print(data_json)    df = pd.DataFrame([data_json['ApiResults']['zlkp']['jgcyd']['XData'], data_json['ApiResults']['zlkp']['jgcyd']['Ydata']['JGCYD']]).T    df.columns = ['date', 'value']    df['date'] = str(datetime.now().year) + '-' + df['date']    df['date'] = pd.to_datetime(df['date']).dt.date    df.sort_values(['date'], inplace=True)    df.reset_index(inplace=True, drop=True)    df['value'] = pd.to_numeric(df['value'])    print(df)    df.to_excel(r'C:\Users\Administrator\Desktop\千股千评.xlsx')    if symbol[0]=='0':        symbol='sz'+symbol    else:        symbol='sh'+symbol    kline_data=ak.stock_zh_a_daily(symbol=symbol,start_date='20210101')    plot_kines_figure(df1=kline_data)#历史评分def get_stock_ls_sore():    '''    历史评分    '''    symbol=sg.popup_get_text('输入股票代码比如603260')    url = f"https://data.eastmoney.com/stockcomment/api/{symbol}.json"    r = requests.get(url)    data = r.json()    df = pd.DataFrame([data['ApiResults']['zhpj']['HistoryScore']['XData'], data['ApiResults']['zhpj']['HistoryScore']['Ydata']['Score'], data['ApiResults']['zhpj']['HistoryScore']['Ydata']['Price']]).T    df.columns = ['日期', '评分', "股价"]    df['日期'] = str(datetime.now().year) + '-' + df['日期']    df['日期'] = pd.to_datetime(df['日期']).dt.date    df.sort_values(['日期'], inplace=True)    df.reset_index(inplace=True, drop=True)    df['评分'] = pd.to_numeric(df['评分'])    df['股价'] = pd.to_numeric(df['股价'])    print(df)    df.to_excel(r'C:\Users\Administrator\Desktop\千股千评.xlsx')    if symbol[0]=='0':        symbol='sz'+symbol    else:        symbol='sh'+symbol    kline_data=ak.stock_zh_a_daily(symbol=symbol,start_date='20210101')    plot_kines_figure(df1=kline_data)#用户关注def get_stock_yhgz():    '''    用户关注    '''    symbol=sg.popup_get_text('输入股票代码比如603260')    url = f"https://data.eastmoney.com/stockcomment/api/{symbol}.json"    r = requests.get(url)    data = r.json()    df = pd.DataFrame([data['ApiResults']['scrd']['focus'][1]['XData'], data['ApiResults']['scrd']['focus'][1]['Ydata']['StockFocus'], data['ApiResults']['scrd']['focus'][1]['Ydata']['ClosePrice']]).T    df.columns = ['日期', '用户关注指数', "收盘价"]    df['日期'] = str(datetime.now().year) + '-' + df['日期']    df['日期'] = pd.to_datetime(df['日期']).dt.date    df.sort_values(['日期'], inplace=True)    df.reset_index(inplace=True, drop=True)    df['用户关注指数'] = pd.to_numeric(df['用户关注指数'])    df['收盘价'] = pd.to_numeric(df['收盘价'])    print(df)    df.to_excel(r'C:\Users\Administrator\Desktop\千股千评.xlsx')    if symbol[0]=='0':        symbol='sz'+symbol    else:        symbol='sh'+symbol    kline_data=ak.stock_zh_a_daily(symbol=symbol,start_date='20210101')    plot_kines_figure(df1=kline_data)#市场参与意愿def stock_comment_detail_scrd_desire_em():    '''    市场参与意愿    '''    symbol=sg.popup_get_text('输入股票代码比如603260')    url = f"https://data.eastmoney.com/stockcomment/api/{symbol}.json"    r = requests.get(url)    data = r.json()    date_str = data['ApiResults']['scrd']['desire'][0][0]['UpdateTime'].split(" ")[0].replace("/", "-")    df = pd.DataFrame([data['ApiResults']['scrd']['desire'][1]['XData'], data['ApiResults']['scrd']['desire'][1]['Ydata']['MajorPeopleNumChg'], data['ApiResults']['scrd']['desire'][1]['Ydata']['PeopleNumChange'], data['ApiResults']['scrd']['desire'][1]['Ydata']['RetailPeopleNumChg']]).T    df.columns = ['日期时间', '大户', "全部", "散户"]    df['日期时间'] = date_str + ' ' + df['日期时间']    df['日期时间'] = pd.to_datetime(df['日期时间'])    df.sort_values(['日期时间'], inplace=True)    df.reset_index(inplace=True, drop=True)    df['大户'] = pd.to_numeric(df['大户'])    df['全部'] = pd.to_numeric(df['全部'])    df['散户'] = pd.to_numeric(df['散户'])    print(df)    df.to_excel(r'C:\Users\Administrator\Desktop\千股千评.xlsx')    if symbol[0]=='0':        symbol='sz'+symbol    else:        symbol='sh'+symbol    kline_data=ak.stock_zh_a_daily(symbol=symbol,start_date='20210101')    plot_kines_figure(df1=kline_data)#日度市场参与意愿def get_stock_rdcyyy():    '''    日度市场参与意愿    '''    symbol=sg.popup_get_text('输入股票代码比如603260')    url = f"https://data.eastmoney.com/stockcomment/api/{symbol}.json"    r = requests.get(url)    data = r.json()    date_str = data['ApiResults']['scrd']['desire'][0][0]['UpdateTime'].split(" ")[0].replace("/", "-")    df = pd.DataFrame([data['ApiResults']['scrd']['desire'][2]['XData'], data['ApiResults']['scrd']['desire'][2]['Ydata']['PeopleNumChg'], data['ApiResults']['scrd']['desire'][2]['Ydata']['TotalPeopleNumChange']]).T    df.columns = ['日期', '当日意愿下降', "五日累计意愿"]    df['日期'] = date_str[:4] + '-' + df['日期']    df['日期'] = pd.to_datetime(df['日期']).dt.date    df.sort_values(['日期'], inplace=True)    df.reset_index(inplace=True, drop=True)    df['当日意愿下降'] = pd.to_numeric(df['当日意愿下降'])    df['五日累计意愿'] = pd.to_numeric(df['五日累计意愿'])    print(df)    df.to_excel(r'C:\Users\Administrator\Desktop\千股千评.xlsx')    if symbol[0]=='0':        symbol='sz'+symbol    else:        symbol='sh'+symbol    kline_data=ak.stock_zh_a_daily(symbol=symbol,start_date='20210101')    plot_kines_figure(df1=kline_data)#市场成本def get_stock_sccb():    """    市场成本    """    symbol=sg.popup_get_text('输入股票代码比如603260')    url = f"https://data.eastmoney.com/stockcomment/api/{symbol}.json"    r = requests.get(url)    data = r.json()    date_str = data['ApiResults']['scrd']['cost'][0][0]['UpdateDate'].split(" ")[0].replace("/", "-")    df = pd.DataFrame([data['ApiResults']['scrd']['cost'][1]['XData'], data['ApiResults']['scrd']['cost'][1]['Ydata']['AvgBuyPrice'], data['ApiResults']['scrd']['cost'][1]['Ydata']['FiveDayAvgBuyPrice']]).T    df.columns = ['日期', '市场成本', "5日市场成本"]    df['日期'] = date_str[:4] + '-' + df['日期']    df['日期'] = pd.to_datetime(df['日期']).dt.date    df.sort_values(['日期'], inplace=True)    df.reset_index(inplace=True, drop=True)    df['市场成本'] = pd.to_numeric(df['市场成本'])    df['5日市场成本'] = pd.to_numeric(df['5日市场成本'])    print(df)    df.to_excel(r'C:\Users\Administrator\Desktop\千股千评.xlsx')    if symbol[0]=='0':        symbol='sz'+symbol    else:        symbol='sh'+symbol    kline_data=ak.stock_zh_a_daily(symbol=symbol,start_date='20210101')    plot_kines_figure(df1=kline_data)stock_pj.add_command(label='千股千评全部数据',command=get_all_stock_data)stock_pj.add_command(label='千股千评机构参与度数据',command=get_stock_jgcyd)stock_pj.add_command(label='千股千评历史评分数据',command=get_stock_ls_sore)stock_pj.add_command(label='千股千评用户关注数据',command=get_stock_yhgz)stock_pj.add_command(label='千股千评市场参与意愿',command=stock_comment_detail_scrd_desire_em)stock_pj.add_command(label='千股千评日度市场参与意愿数据',command=get_stock_rdcyyy)stock_pj.add_command(label='千股千评市场成本数据',command=get_stock_sccb)root['menu']=menumoderoot.mainloop()
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xg_quant

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值