AIRider commited on
Commit
75b6b1a
ยท
verified ยท
1 Parent(s): d368578

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +50 -36
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 scrape_kosdaq_info():
10
- # ์š”์ฒญ ๋ฐ HTML ํŒŒ์‹ฑ
 
11
  response = requests.get(KOSDAQ_URL)
12
- response.raise_for_status()
13
- soup = BeautifulSoup(response.text, "html.parser")
 
 
 
14
 
15
- # ๋ฐ์ดํ„ฐ ์ถ”์ถœ
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  rows = soup.select("table.type_2 tbody tr")
17
  data = []
18
  for row in rows:
19
- # ์ข…๋ชฉ๋ช… ์ถ”์ถœ
20
- name_tag = row.select_one("a.tltle")
21
- if name_tag:
22
- name = name_tag.text.strip()
23
- # ์ข…๋ชฉ ์ฝ”๋“œ ์ถ”์ถœ
24
- code = name_tag["href"].split("code=")[-1]
25
- data.append({"์ข…๋ชฉ๋ช…": name, "์ข…๋ชฉ์ฝ”๋“œ": code})
26
 
27
- # DataFrame์œผ๋กœ ๋ณ€ํ™˜
28
- df = pd.DataFrame(data)
29
- return df
 
30
 
31
- def display_kosdaq_info():
32
- # ๋ฐ์ดํ„ฐ ์Šคํฌ๋ž˜ํ•‘ ๋ฐ ์ถœ๋ ฅ
33
- df = scrape_kosdaq_info()
34
  return df
35
 
36
- # ๊ทธ๋ผ๋””์˜ค UI ์ •์˜
37
- def kosdaq_ui():
38
- def get_table():
39
- # ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ
40
- df = scrape_kosdaq_info()
41
  return df
 
 
42
 
43
- interface = gr.Interface(
44
- fn=get_table,
45
- inputs=None,
46
- outputs="dataframe",
47
- title="์ฝ”์Šค๋‹ฅ ์ข…๋ชฉ ์ •๋ณด ์Šคํฌ๋ž˜ํผ",
48
- description="๋„ค์ด๋ฒ„ ์ฆ๊ถŒ ์‚ฌ์ดํŠธ์—์„œ ์ฝ”์Šค๋‹ฅ ์ข…๋ชฉ ์ •๋ณด๋ฅผ ์Šคํฌ๋ž˜ํ•‘ํ•˜์—ฌ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค."
49
- )
50
- interface.launch()
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()