SMRJan_2025 / src /streamlit_app.py
sabrina91's picture
Update src/streamlit_app.py
2974122 verified
import streamlit as st
import pandas as pd
import requests
from bs4 import BeautifulSoup
st.set_page_config(page_title="SMRJ 最新ニュース", layout="wide")
@st.cache_data(ttl=3600)
def fetch_news():
"""爬取 SMRJ 官方新聞列表"""
url = "https://www.smrj.go.jp/news/index.html"
headers = {"User-Agent": "Mozilla/5.0"}
res = requests.get(url, headers=headers)
res.encoding = "utf-8"
soup = BeautifulSoup(res.text, "html.parser")
news_items = soup.select("li.news-list__item")[:15]
data = []
for item in news_items:
date = item.select_one(".news-item__date")
labels = item.select(".news-item__label")
title = item.select_one(".news-item__text")
data.append({
"日期": date.get_text(strip=True) if date else "",
"分類": ", ".join([lbl.get_text(strip=True) for lbl in labels]) if labels else "",
"標題": title.get_text(strip=True) if title else ""
})
df = pd.DataFrame(data)
return df
# ---------------- Streamlit UI ----------------
st.title("📢 SMRJ 最新ニュース (前15件)")
df = fetch_news()
if df.empty:
st.warning("⚠️ 無法取得資料,請稍後再試")
else:
st.dataframe(df, use_container_width=True)
# CSV 下載
csv = df.to_csv(index=False, encoding="utf-8")
st.download_button(
label="📥 下載 CSV",
data=csv,
file_name="smrj_announcement.csv",
mime="text/csv",
)
st.caption("データ出典: 中小企業基盤整備機構 (SMRJ)")