-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstreamlit.py
56 lines (45 loc) · 1.89 KB
/
streamlit.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# Description: This is the main file for the Streamlit app.
from class_onet import Onet
import streamlit as st
import pandas as pd
import os
import requests
import openpyxl
import concurrent.futures
directory = 'onet'
filename = 'onet'
def main():
st.title('ONet demonstration')
st.subheader('計畫主理人:陳文豪教授')
st.markdown('標竿計畫:ONet職業資訊網站爬蟲 -作者:鄭仲恒')
st.markdown('請輸入ONet網址,並點擊Fetch data按鈕來取得資料')
st.markdown('資料取得後,將會顯示技能和知識的資料表,並提供Save按鈕來下載資料,清除先前紀錄請點擊Reload按鈕')
# 使用 Streamlit 的 text_input 函數來讓使用者輸入 URL
url = st.text_input('Enter URL')
if st.button('Fetch data'):
progress_bar = st.progress(0)
onet = Onet(url)
info = onet.get_info()
st.write(info)
st.write('Data fetched')
dfs = onet.work_skill()
progress_bar.progress(50)
dfs_2 = onet.work_knowledge()
progress_bar.progress(100)
all_dfs = dfs + dfs_2
# 使用 Streamlit 的 table 函數來顯示合併後的 DataFrame
for df in all_dfs:
st.table(df.T) # 使用轉置來使 DataFrame 更容易閱讀
# 設計一個按鈕來保存 DataFrame 讓使用者可以下載
if st.button('Save'):
if not os.path.exists(directory):
os.makedirs(directory)
for i, df in enumerate(all_dfs):
df.to_excel(os.path.join(directory, f"{filename}_{i}.xlsx"))
df.to_csv(os.path.join(directory, f"{filename}_{i}.csv"))
df.to_csv(os.path.join(directory, f"{filename}_{i}.txt"), sep='\t')
st.write('Data saved')
if st.button('Reload'):
st.experimental_rerun()
if __name__ == '__main__':
main()