kijeoung's picture
Update app.py
cd4f45f verified
raw
history blame
1.52 kB
# app.py
import gradio as gr
import requests
from bs4 import BeautifulSoup
def scrape_naver_blog(url):
try:
# HTTP μš”μ²­ 보내기
response = requests.get(url)
response.raise_for_status()
# HTML νŒŒμ‹±
soup = BeautifulSoup(response.text, 'html.parser')
# 제λͺ© μŠ€ν¬λž˜ν•‘
title_div = soup.find('div', class_='se-module se-module-text se-title-text')
if title_div:
title = title_div.get_text(strip=True)
else:
title = "제λͺ©μ„ 찾을 수 μ—†μŠ΅λ‹ˆλ‹€."
# λ‚΄μš© μŠ€ν¬λž˜ν•‘
content_div = soup.find('div', class_='se-module se-module-text se-quote')
if content_div:
content = "\n".join(p.get_text(strip=True) for p in content_div.find_all('p'))
else:
content = "λ‚΄μš©μ„ 찾을 수 μ—†μŠ΅λ‹ˆλ‹€."
return f"제λͺ©:\n{title}\n\nλ‚΄μš©:\n{content}"
except requests.exceptions.RequestException as e:
return f"HTTP μš”μ²­ μ—λŸ¬: {e}"
except Exception as e:
return f"μŠ€ν¬λž˜ν•‘ μ—λŸ¬: {e}"
# Gradio μΈν„°νŽ˜μ΄μŠ€ μ •μ˜
def main():
gr.Interface(
fn=scrape_naver_blog,
inputs=gr.Textbox(label="넀이버 λΈ”λ‘œκ·Έ URL μž…λ ₯"),
outputs=gr.Textbox(label="μŠ€ν¬λž˜ν•‘ κ²°κ³Ό"),
title="넀이버 λΈ”λ‘œκ·Έ 슀크래퍼",
description="넀이버 λΈ”λ‘œκ·Έμ—μ„œ 제λͺ©κ³Ό λ‚΄μš©μ„ μŠ€ν¬λž˜ν•‘ν•©λ‹ˆλ‹€. URL을 μž…λ ₯ν•˜μ„Έμš”."
).launch()
if __name__ == "__main__":
main()