色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用Tkinter構建股票數據抓取以及展示K線圖功能

我快閉嘴 ? 來源:蘿卜大雜燴 ? 作者:周蘿卜 ? 2022-09-07 11:00 ? 次閱讀

在前面的文章中,我們學習了如何使用 Tkinter 構建股票數據抓取以及展示K線圖功能,雖然大致的功能已經具備,但是在當今這個人手一個 Web 服務的年代,GUI 程序還是沒有 Web 服務來的香啊。我們需要用到的知識包括 PyEcharts 的使用,tushare 庫獲取股票數據的方法以及 Flask 的基本用法。

01獲取股票數據

我們先來看下 tushare 的使用,這個應該是當前最為流行的股票數據庫了吧,一行代碼,就能輕松獲取某支股票的歷史數據

importtushareasts
df=ts.get_hist_data('000001')
print(df)

8161c7ce-2dd3-11ed-ba43-dac502259ad0.png

現在股票的歷史數據有了,我們還需要一份股票名稱和股票代碼的對應表,同樣通過 tushare 來獲取

stock_list=ts.get_stock_basics()
stock_list.reset_index(inplace=True)
stock_list[['code','name']].to_csv('stock_code_name.csv')

這樣就成功保存了一份股票名稱和股票代碼的對應數據

8172bbf6-2dd3-11ed-ba43-dac502259ad0.png

02PyEcharts作圖

下面再來看看如何通過 PyEcharts 來制作 K 線圖,其實官網上的例子已經非常具體了,我們只需要把拿到的歷史股票數據做些簡單處理即可,我這里直接給我的數據處理過程

mydate=df[:30].index.tolist()
mydata=df[:30][['open','close','low','high']].values.tolist()


defkline_base(mydate,data)->Kline:
c=(
Kline()
.add_xaxis(mydate)
.add_yaxis("kline",data)
.set_global_opts(
yaxis_opts=opts.AxisOpts(is_scale=True,
splitarea_opts=opts.SplitAreaOpts(
is_show=True,areastyle_opts=opts.AreaStyleOpts(opacity=1)
),
),
xaxis_opts=opts.AxisOpts(is_scale=True,
axislabel_opts=opts.LabelOpts(rotate=-30)),
title_opts=opts.TitleOpts(title="Kline-基本示例"),
datazoom_opts=[opts.DataZoomOpts()],
)
)
returnc

kline_base(mydate,mydata).render_notebook()

這樣就可以得到一個不錯的 K 線圖了

81921096-2dd3-11ed-ba43-dac502259ad0.png

下面我們就可以著手完成 Flask 的代碼啦

03構建 Web框架

首先我們先來完成 Web 框架的整體編寫,為了頁面的美觀與編碼的方便,直接使用 bootstrap 來構建前端頁面

視圖函數編寫

首先完成初始化工作,在項目目錄下創(chuàng)建一個 app.py 文件

fromflaskimportFlask,render_template,request
frompyechartsimportoptionsasopts
frompyecharts.chartsimportKline
importtushareasts
importpandasaspd
fromflask_bootstrapimportBootstrap

app=Flask(__name__)
bootstrap=Bootstrap(app)

導入需要用到的庫,并完成 flask app 的初始化工作。

接下來再寫一個 404 的視圖函數,統一處理所有的 Not Found 頁面

@app.errorhandler(404)
defpage_not_found(e):
returnrender_template("404.html"),404

接著我們綁定根地址到 index 視圖函數上,返回到 index.html 模板文件上

@app.route("/")
defindex():
returnrender_template("index.html")

模板編寫

在同級目錄創(chuàng)建一個 templates 文件夾,創(chuàng)建三個 HTML 文件,分別為 404.html,base.html 和 index.html

base.html 是所有其他頁面 HTML 模板的母模板

{%extends"bootstrap/base.html"%}

{%blocktitle%}我的股票走勢網站{%endblock%}


{%blocknavbar%}
<divclass="navbarnavbar-inverse"role="navigation">
<divclass="container">
<divclass="navbar-header">
<buttontype="button"class="navbar-toggle"data-toggle="collapse"data-target=".navbar-collapse">
<spanclass="sr-only">Togglenavigationspan>
<spanclass="icon-bar">span>
<spanclass="icon-bar">span>
<spanclass="icon-bar">span>
button>
<aclass="navbar-brand"href="/">Stock-Dataa>
div>
<divclass="navbar-collapsecollapse">
<ulclass="navnavbar-nav">
<li><ahref="/">Homea>li>
ul>
div>
div>
div>
{%endblock%}

{%blockcontent%}
<divclass="container">
{%blockpage_content%}
{%endblock%}
div>
{%endblock%}

創(chuàng)建一個導航欄,并定義相關的 block 內容

接下來編寫 404.html 文件,展示非法 url 請求地址時的頁面

{%extends"base.html"%}

{%blocktitle%}PageNotFound{%endblock%}

{%blockpage_content%}
class="page-header">

NotFound

{%endblock%}

對于 index.html 文件,就是我們需要展示 K 線圖的頁面,我們后面再處理。

04編輯主邏輯

首先編寫一個檢查股票正確性的函數

defcheck_stock(code):
n=0
l=[]
stock_code=pd.read_csv("stock_code_name.csv",dtype=object)
stock_code.drop('Unnamed:0',axis=1,inplace=True)
stock_list=stock_code.values.tolist()
foriinstock_list:
ifcodeini:
n+=1
l=i
else:
continue
returnn,l

如果股票正確,則返回 n=1,否則返回 n=0

接下來再編寫獲取股票數據的函數

defget_stock_data(code,ctime):
df=ts.get_hist_data(code)
mydate=df[:ctime].index.tolist()
mydata=df[:ctime][['open','close','low','high']].values.tolist()
return[mydate,mydata]

下面就是把 PyEcharts 集成到 Flask 應用了,可以按照官方的教程走,把 PyEcharts 的樣式文件等拷貝到自己的 templates 目錄下,再編寫一個用于調用 kline_base() 函數的視圖函數

@app.route("/Kline",methods=['GET','POST'])
defget_kline_chart():
stock_name=request.form.get('stockName')
query_time=request.form.get('queryTime')
ifnotstock_name:
stock_name='平安銀行'
ifnotquery_time:
query_time=30
status,stock_code=check_stock(stock_name)
ifstatus==0:
return'errorstockcodeorname'
mydate,mydata=get_stock_data(stock_code[0],int(query_time))
c=kline_base(mydate,mydata,stock_code[1])
returnc.dump_options()

首先通過 request 變量獲取到前端傳遞過來的數據,分別為 stockName 和 queryTime,如果這兩個參數是空值時,則賦予它們一個默認值。

接著判斷股票代碼的正確性并獲取股票歷史數據。

最后調用 kline_base 函數畫出 K 線圖,并渲染到前端頁面上。

05前端頁面編寫

最后我們來完成前端頁面的工作

首先定義一個表單,用于傳遞股票名稱,查詢時間

<formid="form1"onsubmit="returnfalse"action="#"method="post">
<pid="p1">股票名稱:
<inputname="stockName"type="text"id="stockName"tabindex="1"size="16"value=""placeholder="股票名稱"/>
p>
<pid="p2">查詢時間:
<inputname="queryTime"type="text"id="queryTime"tabindex="2"size="16"value=""placeholder="輸入30查詢近30天數據"/>
p>
<p><inputtype="submit"value="查詢"onclick="getData()">p>
form>

然后就是通過 JQuery 來動態(tài)獲取數據

functiongetData(){
varchart=echarts.init(document.getElementById('kline'),'white',{renderer:'canvas'});
$.ajax({
type:"POST",
dataType:"json",
url:"/Kline",
data:$('#form1').serialize(),
success:function(result){
chart.setOption(result);
},
error:function(){
alert("錯誤的股票代碼!");
}
});
}

最后我們看下整體的效果

81da1e9a-2dd3-11ed-ba43-dac502259ad0.gif

是不是效果還不錯呢,后面還可以繼續(xù)添加功能來完善我們的小小網站!

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7134

    瀏覽量

    89526
  • Web
    Web
    +關注

    關注

    2

    文章

    1269

    瀏覽量

    69704
  • python
    +關注

    關注

    56

    文章

    4807

    瀏覽量

    85016

原文標題:用Python輕松制作一個股票K線圖網站

文章出處:【微信號:AI科技大本營,微信公眾號:AI科技大本營】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Python爬取雪球股票數據_第1節(jié) #硬聲創(chuàng)作季

    數據程序python
    充八萬
    發(fā)布于 :2023年08月04日 23:31:05

    Python爬取雪球股票數據_第2節(jié) #硬聲創(chuàng)作季

    數據程序python
    充八萬
    發(fā)布于 :2023年08月04日 23:31:56

    Python爬取雪球股票數據_第5節(jié) #硬聲創(chuàng)作季

    數據程序python
    充八萬
    發(fā)布于 :2023年08月04日 23:34:27

    Python爬取雪球股票數據_第6節(jié) #硬聲創(chuàng)作季

    數據程序python
    充八萬
    發(fā)布于 :2023年08月04日 23:35:18

    基于網絡共識的股票價格行為數據挖掘(英文

    的復雜性,急需從不同角度將各方面知識綜合利用。本文提出了股票價格充分融合網絡共識的策略,構建了基于網絡共識的股票價格行為數據挖掘平臺。從交易系統實時采集
    發(fā)表于 04-24 09:56

    股票行情實時數據網絡采集LabVIEW程序

    本帖最后由 fantek 于 2013-12-26 12:56 編輯 根據網上資料設計了一個股票行情實時數據采集小程序。程序主要實現了行情數據網絡采集接口、K
    發(fā)表于 12-26 12:49

    炒股福利:樹莓派股票查詢庫(Python)

    的速度快很多。第五步:編寫Python腳本我們將創(chuàng)建一個新目錄和一個Python來獲取股票數據。輸入:mkdir stockquotecd stockquotenano stockquote.py然后
    發(fā)表于 01-06 14:20

    深圳天瑞地安解析股票軟件的功能需求

    開發(fā)公司天瑞地安就來簡要解析股票APP功能需求。  開發(fā)一個股票APP有哪些功能?一、手機客戶端: 1.股票行情列表:顯示各種
    發(fā)表于 02-13 19:16

    labview獲取并分析股票數據

    ``
    發(fā)表于 03-08 09:50

    股票數據如何分析

    股票數據分析
    發(fā)表于 05-29 10:49

    視覺與運動_讀取CDR

    視覺與運動_讀取CDR(股票現價與市凈率) 無聊做了個 讀取CDR vi來幫我完成股票數據收集!
    發(fā)表于 07-22 23:21

    基于強化學習的股票預測系統的研究與設計

    股票市場是金融分析領域中重要而困難的問題。股票數據的分析和預測具有重大的理論意義和誘人的應用價值。BP 神經網絡在目前的股票預測系統中應用廣泛,但是作為有導師的學
    發(fā)表于 09-01 09:16 ?6次下載

    全球最大資產管理公司貝萊德集團增持蘋果股票

    全球最大的資產管理機構——貝萊德集團(BlackRock)已經將其在蘋果公司所持的股票數量增加到3.22億股。
    發(fā)表于 01-26 20:49 ?527次閱讀

    使用TTGO ESP32和Visuino從互聯網獲取股票數據

    電子發(fā)燒友網站提供《使用TTGO ESP32和Visuino從互聯網獲取股票數據.zip》資料免費下載
    發(fā)表于 11-04 09:29 ?0次下載
    使用TTGO ESP32和Visuino從互聯網獲取<b class='flag-5'>股票數據</b>

    蘋果十年砸7000億回購股票

    數據統計分析顯示;蘋果公司長期以來一直持續(xù)堅持回購自家股份;近10年來蘋果公司的股票數量持續(xù)下降;自2013年以來,蘋果公司共計回購了價值7006.1億美元的普通股,已發(fā)行股票數量較峰值時減少了42.24%。超過7000億美元,
    的頭像 發(fā)表于 09-25 11:52 ?469次閱讀
    主站蜘蛛池模板: 国产精品无码AV天天爽人妻蜜桃 | 秋霞电影网午夜一级鲁丝片 | 美妇教师双飞后菊 | G国产精品无马 | 美女胸禁止18以下看 | 日本免费一区二区三区最新vr | 日韩精品亚洲专区在线电影不卡 | 亚洲欧美中文日韩视频 | 欧美人与动牲交A精品 | 日本全彩黄漫无遮挡 | 超清无码波多野吉衣与黑人 | 久久99热这里只频精品6 | 日日干日日操日日射 | yy8090理论三级在线看 | 蜜芽在线播放免费人成日韩视频 | 午夜神器老司机高清无码 | 狠狠色香婷婷久久亚洲精品 | 国产交换丝雨巅峰 | 99RE8国产这里只有精品 | 诱人的秘书BD在线观看 | xiao776唯美清纯 | 伦理电影2499伦理片 | 亚洲三级黄色 | 国产精品-区区久久久狼 | 亚洲专区区免费 | 国产精品成人啪精品视频免费观看 | JIZZ幻女大全| 久久re这里精品在线视频7 | 亚洲人精品午夜射精日韩 | 久久国产36精品色熟妇 | 九九久久精品国产 | 亚洲国产日韩欧美视频二区 | 亚洲蜜桃AV色情精品成人 | 4484在线观看视频 | 把极品白丝班长啪到腿软 | 亚洲伊人久久综合影院2021 | 日韩特黄特色大片免费视频 | 欧美高清vivoesosexo10 | 嗯啊…跟校草在教室里做h 嗯 用力啊 嗯 c我 啊哈老师 | 小小水蜜桃视频高清在线观看免费 | 伊人久在线 |