naverstock_1 / app.py
AIRider's picture
Update app.py
b3b13e7 verified
raw
history blame
2.75 kB
import requests
from bs4 import BeautifulSoup
import pandas as pd
import gradio as gr
# 넀이버 μ½”μŠ€λ‹₯ URL
KOSDAQ_URL = "https://finance.naver.com/sise/sise_rise.naver?sosok=1"
def scrape_kosdaq_data():
print("디버깅: 넀이버 증ꢌ νŽ˜μ΄μ§€ μš”μ²­ μ‹œμž‘...")
# μš”μ²­ 헀더 μΆ”κ°€
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}
# νŽ˜μ΄μ§€ μš”μ²­
response = requests.get(KOSDAQ_URL, headers=headers)
if response.status_code == 200:
print("디버깅: 넀이버 증ꢌ νŽ˜μ΄μ§€ μš”μ²­ 성곡")
else:
print(f"디버깅: μš”μ²­ μ‹€νŒ¨, μƒνƒœ μ½”λ“œ: {response.status_code}")
return pd.DataFrame() # 빈 DataFrame λ°˜ν™˜
# HTML νŒŒμ‹±
soup = BeautifulSoup(response.text, "html.parser")
print("디버깅: ν‘œ 헀더 μΆ”μΆœ μ‹œμž‘...")
# ν‘œμ˜ 헀더 μΆ”μΆœ
headers = []
header_tags = soup.select("table.type_2 thead tr th")
for tag in header_tags:
header_text = tag.get_text(strip=True)
if header_text: # 빈 κ°’ 제거
headers.append(header_text)
print(f"디버깅: μΆ”μΆœλœ 헀더 - {headers}")
print("디버깅: ν‘œ 데이터 μΆ”μΆœ μ‹œμž‘...")
# ν‘œμ˜ 데이터 μΆ”μΆœ
rows = soup.select("table.type_2 tbody tr")
data = []
for row in rows:
cols = row.find_all("td")
if cols: # 빈 ν–‰ μ œμ™Έ
# 각 μ—΄μ˜ ν…μŠ€νŠΈλ₯Ό μΆ”μΆœ
row_data = [col.get_text(strip=True) for col in cols]
# 링크가 μžˆλŠ” 경우 μ’…λͺ©λͺ…을 μΆ”κ°€
link = row.find("a", class_="tltle")
if link:
row_data[1] = link.text.strip()
data.append(row_data)
print(f"디버깅: μΆ”μΆœλœ 데이터 ν–‰ 수 - {len(data)}")
if data:
print(f"디버깅: 첫 번째 데이터 ν–‰ - {data[0]}")
else:
print("디버깅: 데이터 μΆ”μΆœ μ‹€νŒ¨")
return pd.DataFrame(columns=headers) # 빈 DataFrame λ°˜ν™˜
# DataFrame 생성
df = pd.DataFrame(data, columns=headers)
print("디버깅: DataFrame 생성 μ™„λ£Œ")
return df
def display_kosdaq_info():
# 데이터 μŠ€ν¬λž˜ν•‘ 및 λ°˜ν™˜
df = scrape_kosdaq_data()
if not df.empty:
return df
else:
return pd.DataFrame({"κ²°κ³Ό": ["데이터λ₯Ό κ°€μ Έμ˜€λŠ” 데 μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€."]})
# Gradio UI μ„€μ •
gr.Interface(
fn=display_kosdaq_info,
inputs=None,
outputs="dataframe",
title="μ½”μŠ€λ‹₯ μ’…λͺ© 정보 슀크래퍼",
description="넀이버 증ꢌ μ‚¬μ΄νŠΈμ—μ„œ μ½”μŠ€λ‹₯ μ’…λͺ© 정보λ₯Ό μŠ€ν¬λž˜ν•‘ν•˜μ—¬ ν‘œμ‹œν•©λ‹ˆλ‹€."
).launch()