当前位置:   article > 正文

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

streamlit可以做网站吗

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

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


一、Streamlit初步使用

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

环境前提:python3.6+

pip install streamlit

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

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

然后终端运行命令:

streamlit run streamlit_hello.py

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

命令行出现

c1ece400b2f869d0047ee001eff88431.png

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

f1f711d4f7fd6b45ed6b42e2e519fc13.png

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

二、Streamlit初步实践

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

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

首先:安装streamlit的菜单组件

pip install streamlit_option_menu

然后开始编辑网页

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

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

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

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

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

  1. elif choose == 'PubMed文献爬取':
  2. # 定义一个输入框
  3. term1 =st.text_input('请输入查询关键词:',)
  4. # 实例化爬虫的类
  5. sp = sp()
  6. # 确保输入框不为空的时候才执行代码,不然会报错
  7. if len(term1) !=0 :
  8. term = sp.input_term(term1)
  9. # 这里定义了一个单选框,单选框默认选中第一个,
  10. # horizontal这个参数默认的是垂直展示选项,True就代表横向
  11. year = st.radio(
  12. '请勾选筛选年份,不勾选默认最近5年',
  13. ('空','1 year','5 year','10 year'),horizontal=True
  14. )
  15. if year == '1 year' and len(term1) != 0:
  16. year = '1'
  17. term = sp.input_term(term1)
  18. results1 = sp.send_request(term,year)[0]
  19. soup = sp.send_request(term,year)[1]
  20. total_page =int(sp.page_total(soup))
  21. st.write(f'查询结果一共有{total_page}页')
  22. if total_page > 1:
  23. want_page = int(st.text_input('请输入你想爬取的页数+1的数字:'))
  24. time.sleep(5)
  25. cost = want_page / 5
  26. st.write(f'本次爬取预计耗时{cost}分钟')
  27. st.write('文献爬取中请耐心等待...')
  28. if total_page >= want_page - 1:
  29. results2 = sp.next_page(term,want_page,year)
  30. results = results1 + results2
  31. results_list = sp.get_data(results)
  32. st.write('正在写入文件...')
  33. sp.write_data(results_list)
  34. st.write('爬取成功,点击按钮打开文件')
  35. # 定义一个按钮,用来打开文件
  36. if st.button('打开文件'):
  37. # 通过OS,调用系统命令,其实就相当于在终端输入命令
  38. os.system(r'D:/PythonProject/StreamlitArticle/article.csv')
  39. else:
  40. st.write('输入页码过大,请重新输入')
  41. else:
  42. results = results1
  43. results_list =sp.get_data(results)
  44. st.write('正在写入文件...')
  45. sp.write_data(results_list)
  46. st.write('爬取成功,点击按钮打开文件')
  47. if st.button('打开文件'):
  48. 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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/175116
推荐阅读
相关标签
  

闽ICP备14008679号