Flask 扫盲系列-在线股票走势图

Flask入门教程—超详细 1.Flask介绍 Flask是基于Werkzeug,Jinja2的Python微框架,有很多内容和Django类似,特别是在模块渲染方面,还有包括if、for等语法和python代码的引用,如:{% %}和{{ }}等等,但是其中对于url的设置则是全新的,开启服务调用函数也要轻便不少。 2.Flask安装及使用 (1)pip安装Flask C:\>pip3 install flask C:\>pip3 list |findstr Flask Fl... 阅读详情

今天我们来分享一个 Flask 小应用,如何动手实现一个简易的在线股票 K 线图表。我们需要用到的知识包括 PyEcharts 的使用,tushare 库获取股票数据的方法以及 Flask 的基本用法。

640?wx_fmt=jpeg

获取股票数据

我们先来看下 tushare 的使用,这个应该时当前最为流行的股票数据库了吧,一行代码,就能轻松获取某支股票的历史数据

import tushare as ts
df = ts.get_hist_data('000001')
print(df)

640?wx_fmt=png

现在股票的历史数据有了,我们还需要一份股票名称和股票代码的对应表,同样通过 tushare 来获取

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

这样就成功保存了一份股票名称和股票代码的对应数据

640?wx_fmt=png

PyEcharts 作图

下面再来看看如何通过 PyEcharts 来制作 K 线图,其实官网上的例子已经非常具体了,我们只需要把拿到的历史股票数据做些简单处理即可,我这里直接给我的数据处理过程

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


def kline_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()],
        )
    )
    return c

kline_base(mydate, mydata).render_notebook()

这样就可以得到一个不错的 K 线图了

640?wx_fmt=png

下面我们就可以着手完成 Flask 的代码啦

构建 Web 框架

首先我们先来完成 Web 框架的整体编写,为了页面的美观与编码的方便,直接使用 bootstrap 来构建前端页面

视图函数编写

首先完成初始化工作,在项目目录下创建一个 app.py 文件

from flask import Flask, render_template, request
from pyecharts import options as opts
from pyecharts.charts import Kline
import tushare as ts
import pandas as pd
from flask_bootstrap import Bootstrap

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

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

接下来在写一个 404 的视图函数,统一处理所有的 Not Found 页面

@app.errorhandler(404)
def page_not_found(e):
    return render_template("404.html"), 404

接着我们绑定根地址到 index 视图函数上,返回到 index.html 模板文件上

@app.route("/")
def index():
    return render_template("index.html")

模板编写

在同级目录创建一个 templates 文件夹,创建三个 HTML 文件,分别为 404.html,base.html 和 index.html

base.html 时所有其他页面 HTML 模板的母模板

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

{% block title %}我的股票走势网站{% endblock %}


{% block navbar %}
<div class="navbar navbar-inverse" role="navigation">
    <div class="container">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="/">Stock-Data</a>
        </div>
        <div class="navbar-collapse collapse">
            <ul class="nav navbar-nav">
                <li><a href="/">Home</a></li>
            </ul>
        </div>
    </div>
</div>
{% endblock %}

{% block content %}
<div class="container">
    {% block page_content %}
    {% endblock %}
</div>
{% endblock %}

创建一个导航栏,并定义相关的 block 内容

接下来编写 404.html 文件,展示非法 url 请求地址时的页面

{% extends "base.html" %}

{% block title %}Page Not Found{% endblock %}

{% block page_content %}
<div class="page-header">
    <h1>Not Found</h1>
</div>
{% endblock %}

对于 index.html 文件,就是我们需要展示 K 线图的页面,我们后面再处理。

编辑主逻辑

首先编写一个检查股票正确性的函数

def check_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()
    for i in stock_list:
        if code in i:
            n += 1
            l = i
        else:
            continue
    return n, l

如果股票正确,则返回 n=1,否则返回 n=0

接下来再编写获取股票数据的函数

def get_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'])
def get_kline_chart():
    stock_name = request.form.get('stockName')
    query_time = request.form.get('queryTime')
    if not stock_name:
        stock_name = '平安银行'
    if not query_time:
        query_time = 30
    status, stock_code = check_stock(stock_name)
    if status == 0:
        return 'error stock code or name'
    mydate, mydata = get_stock_data(stock_code[0], int(query_time))
    c = kline_base(mydate, mydata, stock_code[1])
    return c.dump_options()

首先通过 request 变量获取到前端传递过来的数据,分别为 stockName 和 queryTime,如果这两个参数是空值时,则赋予它们一个默认值。

接着判断股票代码的正确性并获取股票历史数据。

最后调用 kline_base 函数画出 K 线图,并渲染到前端页面上。

前端页面编写

最后我们来完成前端页面的工作

首先定义一个表单,用于传递股票名称,查询时间

<form id="form1" onsubmit="return false" action="#" method="post">
             <p id="p1">股票名称:
                 <input name="stockName" type="text" id="stockName" tabindex="1" size="16" value="" placeholder="股票名称"/>
             </p>
             <p id="p2">查询时间:
                 <input name="queryTime" type="text" id="queryTime" tabindex="2" size="16" value="" placeholder="输入30查询近30天数据"/>
             </p>
             <p><input type="submit" value="查询" onclick="getData()"></p>
         </form>

然后就是通过 JQuery 来动态获取数据

function getData() {
            var chart = 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("错误的股票代码!");
                }
            });
        }

最后我们看下整体的效果

640?wx_fmt=gif

是不是效果还不错呢,后面还可以继续添加功能来完善我们的小小网站!

后台回复“flask”获取完整代码哦

近期热门:

算法加密后端:接收Tradingview信号并执行机器人程序(Python-Flask&Celery) 烧瓶样板 Flask Boilerplate可以快速开始生产级烧瓶的应用,并预先构建一些额外的包装和配置。 您可以在找到有关此实现的深入文章。 贡献 我们鼓励您为Flask Boilerplate做出贡献! 请查看有关如何进行操作的准则。 入门 先决条件 Python 3.8.2或更高版本 启动并运行Redis客户端 项目设置 # clone the repo $ git clone https://github.com/idris-rampurawala/flask-boilerplate.git # move to the project folder $ cd flask-boilerplate 创建虚拟环境 安装pipenv一个全局python项目pip install pipenv 为该项目创建virtual environment # creating pipenv e 立即下载

相关推荐

手把手教你用HarmBench数据集测试大模型安全性(含多模态案例)

本文详细介绍了如何使用HarmBench数据集测试大模型的安全性,包括文本和多模态越狱指令的实战案例。通过环境配置、数据集获取、测试流程及结果分析,帮助开发者全面评估和提升大模型的安全防护能力,特别关注多模态攻击的防御策略。

weixin_26642481的博客 329

【亲测免费】 基于TradingView本地SDK的可视化前后端代码教程

`chanvis` 是一个基于 TradingView 本地 SDK 的可视化前后端代码库,适用于缠论量化研究和其他基于几何交易的量化研究。该项目提供了完整的可视化工具,支持本地或云平台部署,前后端完全分离,前端基于 Vue 实现,后端使用 Python 的 Flask 框架,并使用 MongoDB 存储 K 线历史数据和缠论识别的结构数据。 ## 项目快速启动 ### 环境准备 1. **...

gitblog_00894的博客 2096

从 0 到 1 构建 Graph RAG 系统:本地图谱 + 通义千问落地实践

本文介绍了一个基于知识图谱的检索增强生成系统(Graph RAG),该系统结合领域知识图谱、语义检索和大模型问答,旨在提供结构化、精准的技术问答服务。文章详细说明了项目背景、目标、核心技术架构以及实现方法,包括本地图谱构建、Neo4j数据库接入、语义检索和大模型集成等关键环节。该系统支持混合检索、多轮问答和知识图谱关联理解,能够有效减少大模型幻觉,提升问答的准确性和可解释性。文中还展示了核心代码结构和流程图,呈现了从文档加载到图谱构建再到问答生成的完整流程。该系统适用于需要处理复杂领域知识的研发和数据分析场

m0_58378112的博客 1403

使用Flask & Plotly 做股票k线图交互式可视化处理(二)

接上一篇,这篇要实现搜索功能: 创建搜索页面: 在templates文件夹内新建main.html文件,内容如下: &lt;!doctype html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;meta charset="utf-8"&gt; &lt;meta name="viewport" conte

泛泛之素 6054

Mac上IDEA的PlantUML插件报错‘找不到Graphviz’?手把手教你用Homebrew搞定(附阿里云镜像避坑)

本文详细解决了Mac上IDEA的PlantUML插件报错‘找不到Graphviz’的问题,通过Homebrew安装Graphviz并配置阿里云镜像源,特别针对Apple Silicon芯片用户提供了优化方案。文章还涵盖了IDEA中PlantUML插件的正确配置和常见问题排查,帮助开发者高效使用PlantUML进行UML图表设计。

weixin_42619742的博客 470

Quantum Espresso实战进阶:HSE混合泛函在能带计算中的精准应用

本文深入探讨了在Quantum Espresso中应用HSE混合泛函进行高精度能带计算的实战方法。针对传统DFT方法低估半导体带隙的问题,HSE通过混合精确交换能,显著提升计算精度。文章详细讲解了从输入文件配置、参数设置(如nqx网格、exxdiv_treatment)、到自洽与非自洽计算流程,以及结果可视化与对比的全过程,并提供了关键的调优与避坑指南,助力实现从PBE到HSE的精准进阶。

weixin_28363123的博客 228

使用Flask & Plotly 做股票k线图交互式可视化处理(三)

要想做到可交互、多图集成显示,dash是一个不错的选择,但是我这回不用dash,我这回用plotly的js,不过我么有js不是很溜,也是慢慢摸索。。 主要策略就是,在网页通过js做可视化,search获得代码,mysql中查找处理后,通过jinja传递给js 网页中添加js可视化部分 在main.html body底部添加js部分,具体应用看这里https://plot.ly/javascr...

泛泛之素 6352

【低空经济】低空无人驾驶航空器运行管理系统设计方案

低空无人驾驶航空器运行管理系统(以下简称“系统”)旨在为低空域内的无人驾驶航空器(UAV)提供高效、安全、智能的运行管理服务。系统通过集成先进的通信、导航、监控、数据处理和人工智能技术,实现对低空域内无人驾驶航空器的实时监控、动态调度、风险评估和应急响应,确保其在复杂空域环境中的安全运行。系统的核心功能包括空域管理、飞行计划审批、实时监控、冲突预警、应急管理和数据分析。空域管理模块负责划分和管理低空域资源,确保不同飞行任务之间的空域隔离和高效利用。

2502_92579126的博客 1142

echarts 词云_python Flask+爬虫制作股票查询、历史数据、股评词云网页

自学python的数据分析,爬虫后,花了几天时间看视频学习Flask做了一个简单的股票查询网页。本来还想着加入一些其他功能,比如财务指标分析,舆情分析,最完美的想法是做成一个股票评分系统,输入股票代码可以自动输出分析结果和最终评分以及排名。但是限于没有服务器(不想花钱买)于是先到此为止,后面计划先实现股票评分的本地系统化,然后有机会再部署到网站上。有类似想法的欢迎交流~ 先放一张最终效果图...

weixin_39975868的博客 681

保姆级教程:用ESP32和SPH0645麦克风做个无线录音笔(附Python服务端实时播放)

本文提供了一份详细的ESP32无线录音笔开发指南,涵盖从硬件搭建到Python服务端实时回放的全过程。通过SPH0645麦克风采集高质量音频数据,利用ESP32的I2S接口和WiFi功能实现无线传输,并结合Python服务端实现实时播放和WAV文件保存,适合远程音频监控和创意交互装置开发。

weixin_30700099的博客 645

遥感影像建筑物变化检测

遥感影像建筑物变化检测

yilvyangguang520的博客 423

Python学习教程:Flask扫盲系列——权限设置

在前面的Python学习教程中,我们设置了系统的注册和登陆功能,已经基本满足了一个小型 Web 应用的需求。那么如果我们想通过这个网站来赚些小钱呢,就需要提供更高级的功能,当然这些高级功能不是免费开放的,设计一个权限系统,来控制高级应用的使用。 撰写高级功能 所谓的高级功能就是用户舍得花钱去购买的功能,像我这种喜欢薅羊毛的主,只配用用基础功能了。 我这里设计的高级功能,就是丰富 K 线图,在...

qfluohao的博客 270

Test-Time Adaptation Induces Stronger Accuracy and Agreement-on-the-Line

TTA不管是否提高了OOD的泛化性都增强了线性的趋势,TTA的初始目的是为了增强OOD的表现,一个人可能会觉得TTA使得ACL更强的原因是他消除了ID和OOD之间的差距,因此所有模型间ID vs OOD的准确率接近于y=x这条线,但是实际上这个解释不能够反映我们的经验发现,因为虽然TTA将分布之间的偏移简化为一种放缩的分布,但是这个放缩的因子幅值可能很大,也就是α<<1但是r>>1,这就会导致很偏离y=x这条线,而且理论分析也是,虽然ID和OOD的差距很大,但是线性关系还在。

m0_62673638的博客 149

moving average filter python_Python学习教程:Flask扫盲系列——权限设置

在前面的Python学习教程中,我们设置了系统的注册和登陆功能,已经基本满足了一个小型 Web 应用的需求。那么如果我们想通过这个网站来赚些小钱呢,就需要提供更高级的功能,当然这些高级功能不是免费开放的,设计一个权限系统,来控制高级应用的使用。撰写高级功能所谓的高级功能就是用户舍得花钱去购买的功能,像我这种喜欢薅羊毛的主,只配用用基础功能了。我这里设计的高级功能,就是丰富 K 线图,在我们原来 K...

weixin_39537977的博客 252

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

基于菜鸟教程的flask学习记录 —— Flask视图函数

flask视图函数,基于菜鸟教程

qq_39991776的博客 1560

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Flask 框架简单入门

Flask框架介绍 Flask 框架 什么是Flask? flask是一种基于python ,并且依赖于Jinja2模板引擎(提供网页解析)和 Werkzeug WSGI服务(python web应用与web 服务之间的接口)的一种微型框架。其中: Jinja2模板引擎:通俗来讲就是服务器接收到用户请求之后,将数据传入HTML文件中后,经过模板引擎的渲染将其呈现在网页中响应给用户。 Werkzeug WSGI:python web 应用程序是一个被调用的对象,它无法直接与web 服务器直接建立联系,所以WS

如有侵权,请联系作者删除 1687

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

flask搭建在线音乐网系统

本文介绍了如何使用Flask框架搭建一个音乐网站系统。首先,介绍了Flask框架的基本概念和使用方法,并且讲解了如何安装和配置Flask。接着,介绍了如何使用Flask创建一个基本的Web应用程序,并且实现了一些基本的功能,例如路由、模板、表单和静态文件等。然后,介绍了如何使用Flask实现用户认证和授权功能,包括用户注册、登录和注销等。最后,介绍了如何使用Flask实现音乐网站的核心功能,包括音乐列表、音乐播放、音乐上传和评论等。本文详细介绍了如何使用Flask框架搭建一个完整的音乐网站系统,包括前端

m0_61981943的博客 5763

Flask入门学习教程

Flask是目前十分流行的web框架,采用Python编程语言来实现相关功能。它被称为微框架(microframework),“微”是指Flask旨在保持代码简洁且易于扩展,Flask框架的主要特征是核心构成比较简单,但具有很强的扩展性和兼容性。Flask主要包括Werkzeug和Jinja2两个核心函数库,它们分别负责业务处理和安全方面的功能,这些基础函数为web项目开发过程提供了丰富的基础组件。

m0_67401920的博客 2269

基于flask框架菜鸟驿站快递分发系统的设计与实现 (python+mysql+论文)

总之,本课题的研究对于提高菜鸟驿站的快递分发效率和质量具有重要的现实意义,有助于推动快递行业的健康发展。Python版本为3.7.7,这是一个稳定且广泛支持的版本,确保了系统的兼容性和安全性。PyCharm是一个强大的Python IDE,它提供了丰富的开发工具和插件支持,包括对Flask框架的友好支持。在数据库管理工具的选择上,使用了Navicat 11,这是一个用户友好且功能强大的数据库管理软件,它支持多种数据库系统,包括MySQL,并提供了图形化界面,使得数据库的管理和维护工作更加便捷。

浩焱毕设程序源码 1177

echarts绘制股票K线图 python+echarts+爬虫

本项目通过爬虫爬取上证和深证股市股票列表,然后批量获取每只股票2018年到2020年每天的交易情况,在通过sanic和echarts在前端页面生成对应股票的k线图 项目目录如下 index.html代码,前端页面 echarts的js代码在echarts官网案例里面复制K线图代码,替换数据 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <script src

marvinmao的博客 2690

利用 Flask 动态展示 Pyecharts 图表数据的几种方法

本文将介绍如何在 web 框架 Flask 中使用可视化工具 pyecharts, 看完本教程你将掌握几种动态展示可视化数据的方法,不会的话你来找我呀…Flask 模板渲...

cainiao_python的博客 3501

使用Flask & Plotly 做股票k线图交互式可视化处理(一)

这里想结合mysql 、flask、plotly做一个在网页上展示的股票k线图,而且具有查找的更能,键入股票代码出现该股票的K线图。 使用Plotly 画股票k线图 plotly有集成的k线图方法,使用起来很方便: 这里随机选取一只股票使用plotly离线方法画图并保存在本地 from sqlalchemy import create_engine from sqlalchemy.ext....

泛泛之素 1万+

大数据毕业设计:python股票数据分析可视化系统 Flask框架 爬虫技术 金融数据(源码+文档)✅

大数据毕业设计:python股票数据分析可视化系统 Flask框架 爬虫技术 金融数据(源码+文档)✅

vx_biyesheji0002的博客 1486

毕业设计:python股票数据分析可视化系统+金融数据+Flask框架 爬虫技术(源码+文档)✅

毕业设计:python股票数据分析可视化系统+金融数据+Flask框架 爬虫技术(源码+文档)✅

公众号:源码之屋,十多年程序猿资深互联网人,目前专注于Python/Java/大数据项目解决方案制定,提供各行业各编程语言的全套开发服务,喜爱code,喜爱分享,生命不止,编码不息! 2633

Flask入门教程(非常详细),从零基础入门到精通,看完这一篇就够了(1)

创建Responsereturn Response(“你好,少年”)make_response方式resp = make_response(‘make response测试’)思考 : 网站如何向客户端返回一个漂亮的页面呢?提示漂亮的页面需要 html 、 css 、 js .可以把这一堆字段串全都写到视图中, 作为 HttpResponse() 的参数,响应给客户端问题视图部分代码臃肿, 耦合度高这样定义的字符串是不会出任何效果和错误的。

2401_84159783的博客 1514
上一篇: 首次公开,升级版廖雪峰价值1980的数据分析全套教程,终终终于免费啦!
下一篇: 罗永浩被“限高”,锤子手机要背锅?Python技术分析告诉你真相
菜鸟学Python
博客等级 码龄9年 8087粉丝 571原创
评论 23
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值