CSB261 commited on
Commit
5162f1f
ยท
verified ยท
1 Parent(s): 0cdc25c

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +53 -0
app.py ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import requests
2
+ from bs4 import BeautifulSoup
3
+ import pandas as pd
4
+ import gradio as gr
5
+
6
+ # ๋„ค์ด๋ฒ„ ์ฆ๊ถŒ URL
7
+ url = "https://finance.naver.com/sise/sise_rise.naver?sosok=1"
8
+
9
+ # ์Šคํฌ๋ž˜ํ•‘ ํ•จ์ˆ˜
10
+ def scrape_naver_finance():
11
+ # ํŽ˜์ด์ง€ ์š”์ฒญ
12
+ response = requests.get(url)
13
+ response.encoding = 'euc-kr' # ํ•œ๊ธ€ ์ธ์ฝ”๋”ฉ ์„ค์ •
14
+ html = response.text
15
+
16
+ # BeautifulSoup์„ ์‚ฌ์šฉํ•˜์—ฌ HTML ํŒŒ์‹ฑ
17
+ soup = BeautifulSoup(html, 'html.parser')
18
+
19
+ # ํ…Œ์ด๋ธ” ์ฐพ๊ธฐ
20
+ table = soup.find("table", {"class": "type_2"})
21
+
22
+ # ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋ฆฌ์ŠคํŠธ
23
+ data = []
24
+
25
+ # ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ–‰(tr) ๊ฐ€์ ธ์˜ค๊ธฐ
26
+ rows = table.find_all("tr")[2:] # ์ฒซ ๋ฒˆ์งธ ํ–‰์€ ์ œ๋ชฉ, ๋‘ ๋ฒˆ์งธ๋Š” ๋นˆ์นธ์ด๋ฏ€๋กœ ์ œ์™ธ
27
+
28
+ for row in rows:
29
+ columns = row.find_all("td")
30
+ if len(columns) > 1:
31
+ rank = columns[0].text.strip()
32
+ name = columns[1].text.strip()
33
+ price = columns[2].text.strip()
34
+ change = columns[3].text.strip()
35
+ rate = columns[4].text.strip()
36
+ volume = columns[5].text.strip()
37
+
38
+ # ๊ฐ ์—ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ์ €์žฅ
39
+ data.append([rank, name, price, change, rate, volume])
40
+
41
+ # DataFrame์œผ๋กœ ๋ณ€ํ™˜
42
+ df = pd.DataFrame(data, columns=["์ˆœ์œ„", "์ข…๋ชฉ๋ช…", "ํ˜„์žฌ๊ฐ€", "์ „์ผ๋น„", "๋“ฑ๋ฝ๋ฅ ", "๊ฑฐ๋ž˜๋Ÿ‰"])
43
+
44
+ return df
45
+
46
+ # ๊ทธ๋ผ๋””์˜ค ์ธํ„ฐํŽ˜์ด์Šค ์ •์˜
47
+ def get_top_stocks():
48
+ df = scrape_naver_finance()
49
+ return df
50
+
51
+ # Gradio ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์„ฑ
52
+ iface = gr.Interface(fn=get_top_stocks, inputs=None, outputs="dataframe", title="๋„ค์ด๋ฒ„ ์ฆ๊ถŒ ์ƒ์Šน TOP ์ข…๋ชฉ")
53
+ iface.launch()