全自动文章采集网源码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 正是你所需要的。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线