실시간 검색어 UI 앱 만들기: Selenium, WebDriver-Manager, Tkinter, WebBrowser 활용



프로젝트 개요

이 프로젝트는 Python을 사용하여 실시간 검색어를 검색하고 이를 GUI로 제공하는 간단한 IT 자동화 애플리케이션입니다. Selenium, webdriver-manager, tkinter, webbrowser 라이브러리를 활용하며, def 함수, for, if 문법을 적극적으로 사용합니다.


기능 설명

  1. 실시간 검색어 크롤링: Selenium과 webdriver-manager를 이용해 포털 사이트에서 실시간 검색어를 가져옵니다.
  2. GUI 인터페이스 제공: Tkinter로 간단한 UI를 만들어 검색어를 표시합니다.
  3. 웹 브라우저 연결: 검색어를 클릭하면 기본 웹 브라우저에서 해당 검색어를 검색합니다.

필요 라이브러리 설치

아래 명령어를 통해 필요한 라이브러리를 설치합니다.

<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. 실시간 검색어 크롤링 함수

Seleniumwebdriver-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()

실행 방법

  1. Python이 설치된 환경에서 위 코드를 실행합니다.
  2. Tkinter GUI 창이 열리며, “검색어 업데이트” 버튼을 눌러 실시간 검색어를 가져옵니다.
  3. 검색어를 클릭하면 기본 브라우저에서 해당 검색 결과가 열립니다.

맺음말

이 프로젝트는 SeleniumTkinter를 결합하여 간단한 IT 자동화 앱을 구현한 사례입니다. 이를 통해 실시간 검색어를 시각적으로 제공하고, 웹 브라우저와 연결하여 사용자의 편리성을 극대화했습니다. 다양한 UI 요소와 자동화 기술을 활용해 응용 프로그램의 기능을 확장해보세요! 🚀


2930 Blog에서 더 알아보기

구독을 신청하면 최신 게시물을 이메일로 받아볼 수 있습니다.