프로젝트 개요
이 프로젝트는 Python을 사용하여 실시간 검색어를 검색하고 이를 GUI로 제공하는 간단한 IT 자동화 애플리케이션입니다. Selenium, webdriver-manager, tkinter, webbrowser 라이브러리를 활용하며, def 함수, for, if 문법을 적극적으로 사용합니다.
기능 설명
- 실시간 검색어 크롤링: Selenium과 webdriver-manager를 이용해 포털 사이트에서 실시간 검색어를 가져옵니다.
- GUI 인터페이스 제공: Tkinter로 간단한 UI를 만들어 검색어를 표시합니다.
- 웹 브라우저 연결: 검색어를 클릭하면 기본 웹 브라우저에서 해당 검색어를 검색합니다.
필요 라이브러리 설치
아래 명령어를 통해 필요한 라이브러리를 설치합니다.
<bash>
pip install selenium
pip install webdriver-manager
코드 구현
1. 주요 모듈 임포트
<python>
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from tkinter import *
import webbrowser
2. 실시간 검색어 크롤링 함수
Selenium과 webdriver-manager를 사용해 포털 사이트(예: 네이버)의 실시간 검색어를 크롤링합니다.
<python>
def get_realtime_keywords():
# ChromeDriver 자동 설치 및 실행
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
# 포털 사이트로 이동 (네이버 실시간 검색어 예시)
driver.get("https://www.naver.com")
# 검색어를 담을 리스트
keywords = []
# 실시간 검색어를 찾는 HTML 요소 크롤링
try:
# 네이버 검색어 목록의 HTML 태그를 XPath로 탐색
elements = driver.find_elements(By.XPATH, '//*[@id="NM_RTK_ROLLING_WRAP"]/div/a/span[2]')
# 검색어 텍스트를 리스트에 추가
for element in elements:
keywords.append(element.text)
except Exception as e:
print("크롤링 중 오류 발생:", e)
finally:
driver.quit() # 드라이버 종료
return keywords
3. Tkinter GUI 구현
Tkinter를 활용해 검색어를 표시하는 GUI를 구현합니다. 각 검색어는 클릭 시 웹 브라우저에서 검색 결과로 연결됩니다.
검색어 클릭 시 웹 브라우저로 연결
<python>
def open_in_browser(keyword):
url = f"https://search.naver.com/search.naver?query={keyword}"
webbrowser.open(url)
Tkinter UI 디자인
<python>
def create_ui():
# Tkinter 기본 윈도우 생성
root = Tk()
root.title("실시간 검색어")
root.geometry("400x600") # 창 크기 설정
# 상단 제목
title_label = Label(root, text="실시간 검색어", font=("Arial", 16, "bold"))
title_label.pack(pady=10)
# 검색어 가져오기 버튼
def update_keywords():
# 기존 검색어 목록 제거
for widget in frame.winfo_children():
widget.destroy()
# 검색어 크롤링
keywords = get_realtime_keywords()
# 검색어 표시
for idx, keyword in enumerate(keywords, start=1):
keyword_label = Button(
frame,
text=f"{idx}. {keyword}",
font=("Arial", 12),
anchor="w",
command=lambda k=keyword: open_in_browser(k), # 클릭 시 브라우저로 이동
)
keyword_label.pack(fill="x", pady=5)
refresh_button = Button(root, text="검색어 업데이트", command=update_keywords)
refresh_button.pack(pady=10)
# 검색어 표시 프레임
frame = Frame(root)
frame.pack(fill="both", expand=True, padx=10, pady=10)
# GUI 실행
root.mainloop()
4. 메인 함수 호출
코드의 메인 실행 부분으로, GUI를 실행합니다.
<python>
if __name__ == "__main__":
create_ui()
전체 코드
아래는 모든 코드가 포함된 완전한 구현입니다:
<python>
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from tkinter import *
import webbrowser
# 실시간 검색어 크롤링 함수
def get_realtime_keywords():
# ChromeDriver 자동 설치 및 실행
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
# 포털 사이트로 이동 (네이버 실시간 검색어 예시)
driver.get("https://www.naver.com")
# 검색어를 담을 리스트
keywords = []
# 실시간 검색어를 찾는 HTML 요소 크롤링
try:
# 네이버 검색어 목록의 HTML 태그를 XPath로 탐색
elements = driver.find_elements(By.XPATH, '//*[@id="NM_RTK_ROLLING_WRAP"]/div/a/span[2]')
# 검색어 텍스트를 리스트에 추가
for element in elements:
keywords.append(element.text)
except Exception as e:
print("크롤링 중 오류 발생:", e)
finally:
driver.quit() # 드라이버 종료
return keywords
# 검색어 클릭 시 브라우저 열기
def open_in_browser(keyword):
url = f"https://search.naver.com/search.naver?query={keyword}"
webbrowser.open(url)
# Tkinter UI 생성
def create_ui():
# Tkinter 기본 윈도우 생성
root = Tk()
root.title("실시간 검색어")
root.geometry("400x600") # 창 크기 설정
# 상단 제목
title_label = Label(root, text="실시간 검색어", font=("Arial", 16, "bold"))
title_label.pack(pady=10)
# 검색어 가져오기 버튼
def update_keywords():
# 기존 검색어 목록 제거
for widget in frame.winfo_children():
widget.destroy()
# 검색어 크롤링
keywords = get_realtime_keywords()
# 검색어 표시
for idx, keyword in enumerate(keywords, start=1):
keyword_label = Button(
frame,
text=f"{idx}. {keyword}",
font=("Arial", 12),
anchor="w",
command=lambda k=keyword: open_in_browser(k), # 클릭 시 브라우저로 이동
)
keyword_label.pack(fill="x", pady=5)
refresh_button = Button(root, text="검색어 업데이트", command=update_keywords)
refresh_button.pack(pady=10)
# 검색어 표시 프레임
frame = Frame(root)
frame.pack(fill="both", expand=True, padx=10, pady=10)
# GUI 실행
root.mainloop()
# 메인 함수 호출
if __name__ == "__main__":
create_ui()
실행 방법
- Python이 설치된 환경에서 위 코드를 실행합니다.
- Tkinter GUI 창이 열리며, “검색어 업데이트” 버튼을 눌러 실시간 검색어를 가져옵니다.
- 검색어를 클릭하면 기본 브라우저에서 해당 검색 결과가 열립니다.
맺음말
이 프로젝트는 Selenium과 Tkinter를 결합하여 간단한 IT 자동화 앱을 구현한 사례입니다. 이를 통해 실시간 검색어를 시각적으로 제공하고, 웹 브라우저와 연결하여 사용자의 편리성을 극대화했습니다. 다양한 UI 요소와 자동화 기술을 활용해 응용 프로그램의 기능을 확장해보세요! 🚀