Spaces:
Sleeping
Sleeping
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() | |