Update app.py
Browse files
app.py
CHANGED
|
@@ -4,6 +4,8 @@ from bs4 import BeautifulSoup
|
|
| 4 |
import pandas as pd
|
| 5 |
import re
|
| 6 |
import gradio as gr
|
|
|
|
|
|
|
| 7 |
|
| 8 |
# ๋ค์ด๋ฒ ์ฆ๊ถ URL
|
| 9 |
url = "https://finance.naver.com/sise/sise_rise.naver?sosok=1"
|
|
@@ -39,9 +41,10 @@ def scrape_naver_finance():
|
|
| 39 |
|
| 40 |
# '์ํ๊ฐ', '์์น' ๋ฑ์ ๊ธ์จ ์ ๊ฑฐ
|
| 41 |
change_cleaned = re.sub(r'[^\d-]', '', change).strip()
|
|
|
|
| 42 |
|
| 43 |
# ๊ฐ ์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ฆฌ์คํธ๋ก ์ ์ฅ
|
| 44 |
-
data.append([rank, name, price, change_cleaned,
|
| 45 |
|
| 46 |
# DataFrame์ผ๋ก ๋ณํ
|
| 47 |
df = pd.DataFrame(data, columns=["์์", "์ข
๋ชฉ๋ช
", "ํ์ฌ๊ฐ", "์ ์ผ๋น", "๋ฑ๋ฝ๋ฅ ", "๊ฑฐ๋๋"])
|
|
@@ -55,13 +58,25 @@ def scrape_naver_finance():
|
|
| 55 |
save_path = os.path.join(save_dir, "naver_top_stocks.xlsx")
|
| 56 |
df.to_excel(save_path, index=False)
|
| 57 |
|
| 58 |
-
|
|
|
|
|
|
|
|
|
|
| 59 |
|
| 60 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 61 |
def get_top_stocks():
|
| 62 |
-
|
| 63 |
-
return
|
| 64 |
|
| 65 |
-
# Gradio ์ธํฐํ์ด์ค ์์ฑ
|
| 66 |
-
iface = gr.Interface(fn=get_top_stocks, inputs=None, outputs="
|
| 67 |
iface.launch()
|
|
|
|
| 4 |
import pandas as pd
|
| 5 |
import re
|
| 6 |
import gradio as gr
|
| 7 |
+
from openpyxl import load_workbook
|
| 8 |
+
from openpyxl.styles import Font
|
| 9 |
|
| 10 |
# ๋ค์ด๋ฒ ์ฆ๊ถ URL
|
| 11 |
url = "https://finance.naver.com/sise/sise_rise.naver?sosok=1"
|
|
|
|
| 41 |
|
| 42 |
# '์ํ๊ฐ', '์์น' ๋ฑ์ ๊ธ์จ ์ ๊ฑฐ
|
| 43 |
change_cleaned = re.sub(r'[^\d-]', '', change).strip()
|
| 44 |
+
rate_cleaned = re.sub(r'[^\d.-]', '', rate).strip()
|
| 45 |
|
| 46 |
# ๊ฐ ์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ฆฌ์คํธ๋ก ์ ์ฅ
|
| 47 |
+
data.append([rank, name, price, change_cleaned, rate_cleaned, volume])
|
| 48 |
|
| 49 |
# DataFrame์ผ๋ก ๋ณํ
|
| 50 |
df = pd.DataFrame(data, columns=["์์", "์ข
๋ชฉ๋ช
", "ํ์ฌ๊ฐ", "์ ์ผ๋น", "๋ฑ๋ฝ๋ฅ ", "๊ฑฐ๋๋"])
|
|
|
|
| 58 |
save_path = os.path.join(save_dir, "naver_top_stocks.xlsx")
|
| 59 |
df.to_excel(save_path, index=False)
|
| 60 |
|
| 61 |
+
# ์์
ํ์ผ์ ์คํ์ผ ์ถ๊ฐ (์์น๋ฅ ์ด 20% ์ด์์ด๋ฉด ์ข
๋ชฉ๋ช
์ ๋นจ๊ฐ์์ผ๋ก ํ์)
|
| 62 |
+
workbook = load_workbook(save_path)
|
| 63 |
+
sheet = workbook.active
|
| 64 |
+
red_font = Font(color="FF0000") # ๋นจ๊ฐ์ ๊ธ์จ์ฒด ์ค์
|
| 65 |
|
| 66 |
+
for row in range(2, sheet.max_row + 1):
|
| 67 |
+
rate_value = sheet.cell(row=row, column=5).value
|
| 68 |
+
if rate_value and float(rate_value) >= 20.0:
|
| 69 |
+
sheet.cell(row=row, column=2).font = red_font # ์ข
๋ชฉ๋ช
์ปฌ๋ผ์ ๋นจ๊ฐ์์ผ๋ก ์ค์
|
| 70 |
+
|
| 71 |
+
workbook.save(save_path)
|
| 72 |
+
|
| 73 |
+
return save_path
|
| 74 |
+
|
| 75 |
+
# ์์
ํ์ผ์ ๋ค์ด๋ก๋ํ ์ ์๋๋ก ๋งํฌ ์ ๊ณต
|
| 76 |
def get_top_stocks():
|
| 77 |
+
file_path = scrape_naver_finance()
|
| 78 |
+
return file_path
|
| 79 |
|
| 80 |
+
# Gradio ์ธํฐํ์ด์ค ์์ฑ (๋ค์ด๋ก๋ ๋งํฌ ์ ๊ณต)
|
| 81 |
+
iface = gr.Interface(fn=get_top_stocks, inputs=None, outputs="file", title="๋ค์ด๋ฒ ์ฆ๊ถ ์์น TOP ์ข
๋ชฉ")
|
| 82 |
iface.launch()
|