Python-Streamlit:让你轻松构建漂亮网页

点击名片关注 阿尘blog,一起学习,一起成长

本文主要分享一个Python的开源库:Streamlit,Streamlit是一个web程序框架,我们可以不用学习前后端,不用去布置Django就可以更高效、更灵活的方式可视化数据并进行结果分析,可以帮助数据科学家和学者在短时间内开发机器学习 (ML) 可视化仪表板。只需几行代码,我们就可以构建并部署强大的数据应用程序,下面开始正文~


一、Streamlit初步使用

1.1 Streamlit的安装和简单使用,和配置

环境前提:python3.6+

pip install streamlit

创建一个python文件(streamlit_hello.py)然后导入Streamlit模块

import streamlit as st
st.set_page_config(page_title='测试一下',layout='wide')
st.write('hello')

然后终端运行命令:

streamlit run streamlit_hello.py

第一次运行,会让你输入邮箱进行绑定,之后就不用了,

命令行出现

c1ece400b2f869d0047ee001eff88431.png

就会自动打开浏览器和网页,如果连接是蓝色的也可以自己点击,网页如下

f1f711d4f7fd6b45ed6b42e2e519fc13.png

下面简单来个实战,将我的爬虫代码,通过网页实现

二、Streamlit初步实践

需求:网页包含简介、pubmed文献爬取,等功能通过边栏选择分别进入不同页面

准备:python爬虫代码、streamlit相关库

首先:安装streamlit的菜单组件

pip install streamlit_option_menu

然后开始编辑网页

from PubmedArticle_s import article_spider as sp
import streamlit as st
from streamlit_option_menu import  option_menu
import os
import time
#定义网页标题
st.set_page_config(page_title='阿尘文献爬虫网站',layout='wide')
#定义边栏导航
with st.sidebar:
    choose = option_menu('阿尘的网站',['网站介绍','PubMed文献爬取','其他网站爬取'],
                         icons=['house','book-half','book-half'])

incon可以访问:https://icons.bootcss.com/

然后根据不同导航定义页面,首先定义介绍的页面

if choose == '网站介绍':
    # 定义页面标题
    st.title('欢迎来到阿尘的爬虫网站')
    # 写入文本
    st.write('这个网站用于爬取PubMed等相关医学文献,请严格按照说明使用,如果有问题请联系阿尘')
    st.write('本网站版权归阿尘微信公众号所有@阿尘blog')

在定义爬虫网页(仅展示部分)

elif choose == 'PubMed文献爬取':
    # 定义一个输入框
    term1 =st.text_input('请输入查询关键词:',)
    # 实例化爬虫的类
    sp = sp()
    # 确保输入框不为空的时候才执行代码,不然会报错
    if len(term1) !=0 :
        term = sp.input_term(term1)
    # 这里定义了一个单选框,单选框默认选中第一个,
    # horizontal这个参数默认的是垂直展示选项,True就代表横向
    year = st.radio(
        '请勾选筛选年份,不勾选默认最近5年',
        ('空','1 year','5 year','10 year'),horizontal=True
    )
    if year == '1 year' and len(term1) != 0:
        year = '1'
        term = sp.input_term(term1)
        results1 = sp.send_request(term,year)[0]
        soup = sp.send_request(term,year)[1]
        total_page =int(sp.page_total(soup))
        st.write(f'查询结果一共有{total_page}页')
        if total_page > 1:
            want_page = int(st.text_input('请输入你想爬取的页数+1的数字:'))
            time.sleep(5)
            cost = want_page / 5
            st.write(f'本次爬取预计耗时{cost}分钟')
            st.write('文献爬取中请耐心等待...')
            if total_page >= want_page - 1:
                results2 = sp.next_page(term,want_page,year)
                results = results1 + results2
                results_list = sp.get_data(results)
                st.write('正在写入文件...')
                sp.write_data(results_list)
                st.write('爬取成功,点击按钮打开文件')
                # 定义一个按钮,用来打开文件
                if st.button('打开文件'):
                    # 通过OS,调用系统命令,其实就相当于在终端输入命令
                    os.system(r'D:/PythonProject/StreamlitArticle/article.csv')
            else:
                st.write('输入页码过大,请重新输入')
        else:
            results = results1
            results_list =sp.get_data(results)
            st.write('正在写入文件...')
            sp.write_data(results_list)
            st.write('爬取成功,点击按钮打开文件')
            if st.button('打开文件'):
                os.system(r'D:/PythonProject/StreamlitArticle/article.csv')
接下来,查看实际效果:

b43deb69afae47a38fba4de29044c2b3.png

8d9f7cb8bdb0128845afb65671f6e2c3.png

OK,是不是简单又很酷炫?其实这里才用了一点皮毛,官网有很多api,可以显示数据分析图、等等功能,包含这些字体,输入框限制等等都可以进行详细定制,一个感觉,简单强大,上手容易,时间有限,就分享到这里了,感兴趣可以去研究研究官方文档。

官方文档地址:

中文:http://cw.hubwiz.com/card/c/streamlit-manual/

英文:https://docs.streamlit.io/

扫描二维码关注阿尘blog,一起交流学习

d0b10b591881774b09cfe0730f1a603a.png

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

是阿尘呀

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

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

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

打赏作者

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

抵扣说明:

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

余额充值