惊呆!用streamlit快速搭建炫酷站点!

大家注意:因为微信最近又改了推送机制,经常有小伙伴说错过了之前被删的文章,比如前阵子冒着风险写的爬虫,再比如一些限时福利,错过了就是错过了。

所以建议大家加个星标,就能第一时间收到推送。👇

b9c7472e796f3f6fe9651e607bc5ee34.jpeg

今天给大家推荐一个Streamlit带导航的网页应用制作方法。

streamlit-option-menu是一个全新的网页导航制作模块包,安装方法:

pip install streamlit_option_menu

今天的实现效果

已部署到linux服务器上 http://www.ssw.fit:8501/

今天的实现效果.mp4

可以一个小脚本,很简单就做一个侧边导航栏、自我介绍、浏览图片音频视频、单词翻译、可视化、在线浏览PDF文档等等。

比较来说,它比用django、flask等框架搭一个站点,或docsify、vuepress、pelican等博客建设工具来的快。很多时候,我们只需要简单展示一些东西,收集几首有趣的歌曲,帮我翻译个单词,如此如此就好啦,不要给我搞得太麻烦!

侧边导航栏

2bc2e3ddba29b9d8c0a1f10ca00f19a9.png

Img
import streamlit as st,requests,json
from streamlit_option_menu import option_menu
import streamlit.components.v1 as html

st.set_page_config(page_title="桃花朵朵开", page_icon="💖", layout="wide")


sysmenu = '''
<style>
#MainMenu {visibility:hidden;}
footer {visibility:hidden;}
'''
st.markdown(sysmenu,unsafe_allow_html=True)
with st.sidebar:
    choose = option_menu("ssw", ["介绍", "图片/音乐/视频", "数据可视化", "翻译", "其他应用"],
                         icons=['house', 'file-earmark-music', 'bar-chart', 'translate', 'brightness-high'],
                         menu_icon="broadcast", default_index=0)

第一个参数是文字提示。第二个参数是一个列表,用于列出你的导航栏中有哪些内容,可以理解为提纲。第三个参数是第二个参数对应的图标,这些图标可以从bootstrap网站找到。https://icons.bootcss.com/

图片音频视频

13442f741fa4a5bc7fb6bcb320bb08bf.png

Img
elif choose == "图片/音乐/视频":
    selecte1 = option_menu(None, ["图片", "音乐", "视频"],
        icons=['house', 'cloud-upload', "list-task"],
        menu_icon="cast", default_index=0, orientation="horizontal")
    if selecte1 == "图片":
        with st.container():
            col1 = st.columns(1)
            with col1:
                st.image("./图片/1.jpg")
        with st.container():
            st.image("./图片/5.jpg")
    elif selecte1 == "音乐":
        st.write("1. Day By Day")
        st.audio("./音乐/1.flac")
    elif selecte1 == "视频":
        st.video("./视频/1.mp4")

数据可视化

d98ae5a47124d71b23a010832a033ffb.png

Img

可以结合Echarts、Plotly等,如Plotly柱状图:

elif choose == "数据可视化":
    selecte2 = option_menu(None, ["Plotly"],
                           icons=["list-task"],
                           menu_icon="cast", default_index=0, orientation="horizontal")

    if selecte2 == "Plotly":
        import plotly.graph_objs as go
        c1, c2, c3, c4, c5 = st.columns([0.05, 1.5, 0.2, 1.5, 0.2])
        with c1:
            st.empty()
        with c2:
            # 柱状图
            trace_basic = [go.Bar(
            。。略

单词翻译

23c193b658324b2efd532ea2b7a621b1.png

Img

结合Streamlit,可以花几分钟时间打造出我们自己的中英单词互翻工具。原理如下:

  1. 使用requests.get构造一个请求,把我们要查询的内容发送到指定的网址

  2. 然后使用json.loads功能把返回的对象转换为json对象

  3. 最后从json格式数据中提取出我们自己需要的key和paraphrase对象值

elif choose == "翻译":
    selecte3 = option_menu(None, ["单词翻译"],
                           icons=['house'],
                           menu_icon="cast", default_index=0, orientation="horizontal")
    if selecte3 == "单词翻译":
        st.header("中英单词互翻神器")
        st.info("要翻译中文单词,请输入中文,会返回对应英文;\n\n\n\n要翻译英文单词,请输入英文,会返回对应中文;")

        danci = st.text_input("请输入要查找的中文单词或英文单词")
        fanhui = requests.get("http://dict.iciba.com/dictionary/word/suggestion?word=" + danci)
        data1 = fanhui.text
        data2 = json.loads(data1)
        for i in range(len(data2["message"])):
            st.write(data2["message"][i]["key"], data2["message"][i]["paraphrase"])

        # 隐藏按钮及底部链接
        sysmenu = '''
        <style>
        #MainMenu {visibility:hidden;}
        footer {visibility:hidden;}
        '''
        st.markdown(sysmenu, unsafe_allow_html=True)

结合Javascript

1a3261694a963bb935eb52b935e3bb75.png

此案例使用streamlit.components.v1组件直接调用我们写好的javascript代码:

elif choose == "其他应用":
    selecte5 = option_menu(None, ["Javascript", "嵌入PDF"],
                           icons=['house', "list-task"],
                           menu_icon="cast", default_index=0, orientation="horizontal")

    if selecte5 == "Javascript":
        from streamlit.components.v1 import html
        html("""
                <script>
        function startTime(){
            var today=new Date();
            var current_time=today.toLocaleString();
            document.getElementById('txt').innerHTML="当前时间为:"+current_time;
            t=setTimeout(function(){startTime()},500);
        }
        function checkTime(i){
            if (i<10){
                i="0" + i;
            }
            return i;
        }
        </script>
        </head>
        <body onload="startTime()">
        <p id="txt" style="color:blue"></p>
            """)

浏览PDF

f453a47917e42b89facd85798cf62fda.png

Img

嵌入PDF文档的原理是,使用base64模块对PDF文档进行了编解码操作,然后使用html中的embed方法,把编解码后的信息进行显示

elif selecte5 == "嵌入PDF":
        import base64
        uploaded_file = st.file_uploader("上传pdf", type=["pdf"])
        if uploaded_file is not None:
            base64_pdf = base64.b64encode(uploaded_file.read()).decode('utf-8')
            pdf_display = f'<embed src="data:application/pdf;base64,{base64_pdf}" width="100%" height="1000" type="application/pdf">'
            st.markdown(pdf_display, unsafe_allow_html=True)

交流群

时隔2个月,摸鱼学习交流群再次限时开放了。

7475211dcac66acebf772fe04c51fb52.png

Python技术交流群(技术交流、摸鱼、白嫖课程为主)又不定时开放了,感兴趣的朋友,可以在下方公号内回复:666,即可进入,一起 100 天计划

老规矩,酱友们还记得么,右下角的 “在看” 点一下,如果感觉文章内容不错的话,记得分享朋友圈让更多的人知道!

b82b42466c18f456807cd71ad7ffce1b.gif

神秘礼包获取方式

识别下方公众号,回复:1024

cc3d5b1c0f519dd7f24ee2d181423364.jpeg

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值