2주차 과제 네이버서치에서 키워드를 입력하면 csv 파일로 저장하는 것을 과제로 했는데, 여기에 지난주 랭체인발표에서 김이언님의 설명중에 들었던 Gradio UI로 보여주면 좋겠다는 생각에 그부분을 추가해 보았다.
우선 ‘돼지용법’으로 질문을 던져보았다
이언님코딩을 보여주었더니 복잡한 설명이 나온다.
그래서 기존에 크롤링 코딩을 보여준후에 코딩을 하라고 했다.
결과물이 나왔다.
중간부분은 생략.. 추가된부분은 아래와 같다.
실행을 해보니 예상대로 에러가 나왔다.
지피티가 대답을 해준다
잘 동작된다. 그런데 결과물이 보기가 좋지 않아 url이 링크되도록 해달라고 요청했다.
최종 결과코딩이다.
import gradio as gr
from bs4 import BeautifulSoup
import requests
from datetime import datetime
def fetch_news(keyword):
base_url = "https://search.naver.com/search.naver?where=news&query="
search_url = base_url + keyword
news_list = []
page = 1
while len(news_list) < 100:
url = f"{search_url}&start={page}"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
articles = soup.select("div.news_wrap.api_ani_send")
if not articles:
break
for article in articles:
date_info = article.select_one("span.info")
if date_info:
time_text = date_info.text
if "분 전" in time_text or "시간 전" in time_text or "오늘" in time_text or "1일전" in time_text or "2일전" in time_text:
title_element = article.select_one("a.news_tit")
title = title_element.get('title')
link = title_element['href']
# HTML 링크 형식으로 결과를 생성
news_list.append(f'<a href="{link}" target="_blank">{title}</a>')
if len(news_list) >= 100:
break
page += 10
# 리스트를 HTML 문자열로 변환
return "<br>".join(news_list)
iface = gr.Interface(
fn=fetch_news,
inputs=gr.Textbox(lines=2, placeholder="Enter Keywords for News Search..."),
outputs="html", # 출력 타입을 'html'로 설정
title="Naver News Search Engine",
description="Type keywords to search for news articles on Naver."
)
iface.launch()
Insight
정기님 강의를 잘듣고 , 그 내용을 접목하면 좋은 결과가 나온다.
다른 발표자들의 내용도 잘 활용해보자.
성공은 Always는 아니지만 과정에 배우는 것이 많고, 노우하우가 축적이된다.
#문과생도AI#2주차과제