全自动文章采集网源码2020(构建可视化webapp的Python工具库pywebio试用下试用报告)
优采云 发布时间: 2022-01-15 19:21全自动文章采集网源码2020(构建可视化webapp的Python工具库pywebio试用下试用报告)
我给你安利了一个 Python 工具库 pywebio,用于构建可视化网络应用。我想知道有没有人试过?
今天我要介绍这个神器。可以说是pywebio的Plus+Pro+Max版。原谅我语无伦次,不过真的很强~
通常,在学习一个新的框架之前,您必须首先研究该框架可以做什么,对吗?
但是对于streamlit,请相信我,这是一个无需大脑也可以学习的框架。我这样说是因为我相信有一天,你将能够使用它。
Streamlit 是一个用于机器学习和数据可视化的 Python 框架,它可以用几行代码构建一个漂亮的在线应用程序。
它可以做什么,取决于你想做什么?
Streamlit 具有强大的功能。虽然要学习的功能很多,但是上手非常容易,学习成本也比前端+Flask低很多。接下来,我将一一介绍。
#1.如何安装?
和安装其他包一样,安装streamlit很简单,一个命令
➜ pip install streamlit
考虑到streamlit会安装更多的工具依赖,为了不污染当前主环境,我使用venv新建一个虚拟环境。
➜ python3 -m venv .
然后使用以下命令进入虚拟环境
➜ source ./venv/bin/activate
接下来安装streamlit,命令如上。
安装的包很多(数一下接近92个?),过程会比较长,需要一点耐心
➜ pip list | wc -l
92
在安装过程中,您可能会遇到一些问题,但不一定,这取决于您的机器。如果遇到问题,请使用搜索引擎解决。
#2. 入门示例
Streamlit 提供了一些介绍性示例,只需执行以下命令
➜ streamlit hello
执行后streamlit会自动打开浏览器加载一个本地页面:8501/
这里有很多demo,大家可以看看,这些demo也有对应的支持代码
这些代码直接复制保存,可以通过以下命令直接在本地运行
➜ streamlit run st-demo.py
#2. 降价文本
导入streamlit后,可以直接使用st.markdown()进行初始化,调用不同的方法,然后将内容填入到document对象中
这是我自己写的一个小Demo供大家参考
import streamlit as st
# markdown
st.markdown('Streamlit Demo')
# 设置网页标题
st.title('一个傻瓜式构建可视化 web的 Python 神器 -- streamlit')
# 展示一级标题
st.header('1. 安装')
st.text('和安装其他包一样,安装 streamlit 非常简单,一条命令即可')
code1 = '''pip3 install streamlit'''
st.code(code1, language='bash')
# 展示一级标题
st.header('2. 使用')
# 展示二级标题
st.subheader('2.1 生成 Markdown 文档')
# 纯文本
st.text('导入 streamlit 后,就可以直接使用 st.markdown() 初始化')
# 展示代码,有高亮效果
code2 = '''import streamlit as st
st.markdown('Streamlit Demo')'''
st.code(code2, language='python')
Streamlit 的运行方式与普通脚本不同,应该使用 streamlit run st-demo.py
运行后会自动打开浏览器加载这个页面。如果没有自动打开,也可以手动复制上图中的链接打开。
是不是有点像那种味道?就是这样,只是一道开胃菜~
#3.数据图表支持3.1图表组件
关于数据的呈现,streamlit 由两个组件支持
表格示例
df = pd.DataFrame(
np.random.randn(10, 5),
columns=('第%d列' % (i+1) for i in range(5))
)
st.table(df)
效果如下
数据框示例
df = pd.DataFrame(
np.random.randn(10, 5),
columns=('第%d列' % (i+1) for i in range(5))
)
st.dataframe(df.style.highlight_max(axis=0))
效果如下,可以看到图标外面有一个向下的小箭头,你点击它,就会排序
除此之外,您还可以看到我已经突出显示了最大值,因为我传入的参数是 df.style.highlight_max(axis=0)
其实样式有n种,比如:
这些您可以在源代码中找到示例
3.2 监控组件
采集 之后对一些监控数据,如果需要做监控面板,streamlit 还为你提供了一个metric组件
以下代码创建三个指标并填写对应数据
col1, col2, col3 = st.columns(3)
col1.metric("Temperature", "70 °F", "1.2 °F")
col2.metric("Wind", "9 mph", "-8%")
col3.metric("Humidity", "86%", "4%")
刷新页面,可以看到如下效果
3.3 原生图表组件
Streamlit 原生支持多种图表:
如下图
折线图
chart_data = pd.DataFrame(
np.random.randn(20, 3),
columns=['a', 'b', 'c'])
st.line_chart(chart_data)
面积图
chart_data = pd.DataFrame(
np.random.randn(20, 3),
columns = ['a', 'b', 'c'])
st.area_chart(chart_data)
直方图
chart_data = pd.DataFrame(
np.random.randn(50, 3),
columns = ["a", "b", "c"])
st.bar_chart(chart_data)
地图
df = pd.DataFrame(
np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],
columns=['lat', 'lon']
)
st.map(df)
3.4 外部图表组件
Streamlit 的一些原生图表组件,虽然做了傻瓜式,但是如果你想要更漂亮的图表,就只能输入数据,高度和宽度,比如 matplotlib.pyplot、Altair、vega-lite、Plotly、Bokeh、Like PyDeck 和 Graphviz , streamlit 还提供支持:
这部分,熟悉的同学自己尝试过,这里不再演示。
#4. 用户操作支持
之前的流光只显示文本和数据。如果是这样的话,那么streamlit就是如此
对于不懂前端,通常需要写一些简单页面的人来说,能写一些交互界面是硬性要求。
幸运的是,Streamlit 几乎支持您通常在网页和应用程序上看到的所有交互式组件。.
这些内容很多,比较简单。不必一一举例。你可以去streamlit源代码中的注释。
#5. 多媒体组件
要在页面上播放图像、音频和视频,可以使用streamlit的这三个组件:
#6. 状态组件
status组件用于向用户显示当前程序的运行状态,包括:
效果如下:
图像
#7. 页面布局
Streamlit 是自上而下渲染的,页面上组件的顺序与代码执行的顺序一致。
对于一个漂亮的 Web 应用来说,单列布局肯定是不够的。
事实上streamlit也提供了多种布局:
st.sidebar:侧边栏
侧边栏可以做一些用户动作控件
st.columns:列容器,同一列中的组件,从左到右依次显示
st.expander:隐藏信息,点击展开显示详细内容,如:显示更多
st.container:收录多个组件的容器
st.empty:收录单个组件的容器
#8. 过程控制系统
Streamlit 从上到下逐渐渲染。如果你的应用场景需要对渲染进行一些控制,streamlit 也提供了相应的方法。
#9. 缓存功能提高速度
当用户在页面上进行一些操作,比如输入数据时,会触发整个流光应用代码的重新执行。如果有读取外部数据的步骤(几G的数据),这种性能损失是非常可怕的。.
但是 streamlit 提供了一个缓存装饰器。当您想重新执行代码以呈现页面时,您将首先检查缓存。如果代码或数据没有变化,可以直接调用缓存的结果。
使用方法也很简单,只需在需要缓存的函数中添加@st.cache 装饰器即可。
DATE_COLUMN = 'date/time'
DATA_URL = ('https://s3-us-west-2.amazonaws.com/'
'streamlit-demo-data/uber-raw-data-sep14.csv.gz')
@st.cache
def load_data(nrows):
data = pd.read_csv(DATA_URL, nrows=nrows)
lowercase = lambda x: str(x).lower()
data.rename(lowercase, axis='columns', inplace=True)
data[DATE_COLUMN] = pd.to_datetime(data[DATE_COLUMN])
return data
#10. 部署上线
本地编写的 Streamlit 应用程序运行后只能在本地访问。
如果你需要允许其他人访问这个应用程序,那么你需要有一个服务器,这样你就可以通过公网ip访问
如果您需要服务器,可以单击此链接以获取优惠券以获得折扣。
另一种选择是使用 Heroku() 部署您的应用程序。
Heroku是一个云平台即服务,支持多种编程语言,只需要注册一个账号(听说网易和邮箱都不好,我用Gmail注册)
然后创建自己的应用程序
这个app的名字在全网好像是独一无二的。本来想拍hello-streamlit的,结果发现已经有人拍了。
然后为您的应用程序创建几个 Heroku 指定的文件
这些文件的编码具有固定的格式。我这里写了一个模板下载地址。
拿到这个模板后,就可以根据这个模板创建自己的git仓库了
git init
git add --all
git commit -m "init"
然后部署到 Heroku
heroku login
heroku create
git push heroku master
heroku ps:scale web=1
按照命令行的 URL 输出来访问您的应用程序。
查看 Heroku 日志:
heroku logs --tail
要使用自己的域名,需要先通过 Heroku 验证。然后运行:
heroku domains:add hivecnstats.iswbm.com
使用 Heroku 唯一的缺点是 Heroku 需要一个梯子,而且大多数人无法访问它。
#12. 总结
Streamlit 是一个开箱即用的工具集,让普通的个人开发者无需学习复杂的前端知识,即可轻松快速地构建简洁优雅的 Web 应用程序。这是streamlit最吸引人的特点。地方。
对于从事数据分析和机器学习领域的人来说,它绝对是一个开发神器,但即使你不在这些领域,你也肯定会有构建 web 应用的需求,而 streamlit 正是你所需要的。