Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -3,52 +3,66 @@ from bs4 import BeautifulSoup
|
|
3 |
import pandas as pd
|
4 |
import gradio as gr
|
5 |
|
6 |
-
# URL
|
7 |
KOSDAQ_URL = "https://finance.naver.com/sise/sise_rise.naver?sosok=1"
|
8 |
|
9 |
-
def
|
10 |
-
|
|
|
11 |
response = requests.get(KOSDAQ_URL)
|
12 |
-
response.
|
13 |
-
|
|
|
|
|
|
|
14 |
|
15 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
rows = soup.select("table.type_2 tbody tr")
|
17 |
data = []
|
18 |
for row in rows:
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
code = name_tag["href"].split("code=")[-1]
|
25 |
-
data.append({"์ข
๋ชฉ๋ช
": name, "์ข
๋ชฉ์ฝ๋": code})
|
26 |
|
27 |
-
|
28 |
-
|
29 |
-
|
|
|
30 |
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
return df
|
35 |
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
df = scrape_kosdaq_info()
|
41 |
return df
|
|
|
|
|
42 |
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
# ์คํ
|
53 |
-
if __name__ == "__main__":
|
54 |
-
kosdaq_ui()
|
|
|
3 |
import pandas as pd
|
4 |
import gradio as gr
|
5 |
|
6 |
+
# ๋ค์ด๋ฒ ์ฝ์ค๋ฅ URL
|
7 |
KOSDAQ_URL = "https://finance.naver.com/sise/sise_rise.naver?sosok=1"
|
8 |
|
9 |
+
def scrape_kosdaq_data():
|
10 |
+
print("๋๋ฒ๊น
: ๋ค์ด๋ฒ ์ฆ๊ถ ํ์ด์ง ์์ฒญ ์์...")
|
11 |
+
# ๋ค์ด๋ฒ ์ฆ๊ถ ํ์ด์ง ์์ฒญ
|
12 |
response = requests.get(KOSDAQ_URL)
|
13 |
+
if response.status_code == 200:
|
14 |
+
print("๋๋ฒ๊น
: ๋ค์ด๋ฒ ์ฆ๊ถ ํ์ด์ง ์์ฒญ ์ฑ๊ณต")
|
15 |
+
else:
|
16 |
+
print(f"๋๋ฒ๊น
: ์์ฒญ ์คํจ, ์ํ ์ฝ๋: {response.status_code}")
|
17 |
+
return None
|
18 |
|
19 |
+
# HTML ํ์ฑ
|
20 |
+
soup = BeautifulSoup(response.text, "html.parser")
|
21 |
+
|
22 |
+
print("๋๋ฒ๊น
: ํ ํค๋ ์ถ์ถ ์์...")
|
23 |
+
# ํ์ ํค๋ ์ถ์ถ
|
24 |
+
headers = []
|
25 |
+
header_tags = soup.select("table.type_2 thead tr th")
|
26 |
+
for tag in header_tags:
|
27 |
+
header_text = tag.get_text(strip=True)
|
28 |
+
if header_text: # ๋น ๊ฐ ์ ๊ฑฐ
|
29 |
+
headers.append(header_text)
|
30 |
+
print(f"๋๋ฒ๊น
: ์ถ์ถ๋ ํค๋ - {headers}")
|
31 |
+
|
32 |
+
print("๋๋ฒ๊น
: ํ ๋ฐ์ดํฐ ์ถ์ถ ์์...")
|
33 |
+
# ํ์ ๋ฐ์ดํฐ ์ถ์ถ
|
34 |
rows = soup.select("table.type_2 tbody tr")
|
35 |
data = []
|
36 |
for row in rows:
|
37 |
+
cols = row.find_all("td")
|
38 |
+
if cols: # ๋น ํ ์ ์ธ
|
39 |
+
row_data = [col.get_text(strip=True) for col in cols]
|
40 |
+
data.append(row_data)
|
41 |
+
print(f"๋๋ฒ๊น
: ์ถ์ถ๋ ๋ฐ์ดํฐ ํ ์ - {len(data)}")
|
|
|
|
|
42 |
|
43 |
+
if data:
|
44 |
+
print(f"๋๋ฒ๊น
: ์ฒซ ๋ฒ์งธ ๋ฐ์ดํฐ ํ - {data[0]}")
|
45 |
+
else:
|
46 |
+
print("๋๋ฒ๊น
: ๋ฐ์ดํฐ ์ถ์ถ ์คํจ")
|
47 |
|
48 |
+
# DataFrame ์์ฑ
|
49 |
+
df = pd.DataFrame(data, columns=headers)
|
50 |
+
print("๋๋ฒ๊น
: DataFrame ์์ฑ ์๋ฃ")
|
51 |
return df
|
52 |
|
53 |
+
def display_kosdaq_info():
|
54 |
+
# ๋ฐ์ดํฐ ์คํฌ๋ํ ๋ฐ ๋ฐํ
|
55 |
+
df = scrape_kosdaq_data()
|
56 |
+
if df is not None:
|
|
|
57 |
return df
|
58 |
+
else:
|
59 |
+
return "๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐ ์คํจํ์ต๋๋ค."
|
60 |
|
61 |
+
# Gradio UI ์ค์
|
62 |
+
gr.Interface(
|
63 |
+
fn=display_kosdaq_info,
|
64 |
+
inputs=None,
|
65 |
+
outputs="dataframe",
|
66 |
+
title="์ฝ์ค๋ฅ ์ข
๋ชฉ ์ ๋ณด ์คํฌ๋ํผ",
|
67 |
+
description="๋ค์ด๋ฒ ์ฆ๊ถ ์ฌ์ดํธ์์ ์ฝ์ค๋ฅ ์ข
๋ชฉ ์ ๋ณด๋ฅผ ์คํฌ๋ํํ์ฌ ํ์ํฉ๋๋ค."
|
68 |
+
).launch()
|
|
|
|
|
|
|
|