[python] PySimpleGUI에서 웹 크롤링 데이터 시각화하기

PySimpleGUI는 Python에서 사용할 수 있는 간단하고 직관적인 GUI 라이브러리입니다. 이번에는 PySimpleGUI를 사용하여 웹 크롤링한 데이터를 시각화하는 방법에 대해 알아보겠습니다.

필요한 라이브러리 설치하기

먼저 PySimpleGUI를 설치해야합니다. 아래의 명령어를 사용하여 PySimpleGUI를 설치합니다.

pip install PySimpleGUI

또한, 데이터 시각화를 위해 Matplotlib와 Seaborn 라이브러리도 설치해야합니다.

pip install matplotlib seaborn

웹 크롤링한 데이터 가져오기

데이터 시각화를 위해서는 먼저 웹 크롤링한 데이터를 가져와야합니다. 예를 들어, 네이버 영화 평점 데이터를 가져오는 경우, BeautifulSoup을 사용하여 웹 페이지의 HTML을 파싱하고 필요한 정보를 추출할 수 있습니다.

import requests
from bs4 import BeautifulSoup

# 웹 페이지 가져오기
url = 'https://movie.naver.com/movie/running/current.nhn'
response = requests.get(url)
html = response.text

# BeautifulSoup을 사용하여 HTML 파싱
soup = BeautifulSoup(html, 'html.parser')

# 데이터 추출하기
data = []
movies = soup.select('.lst_detail_t1 li')
for movie in movies:
    title = movie.select_one('.tit a').text
    rating = movie.select_one('.star_t1 a span').text
    data.append((title, rating))

데이터 시각화하기

이제 가져온 데이터를 사용하여 PySimpleGUI를 사용하여 시각화할 수 있습니다. 예를 들어, 영화 평점을 막대 그래프로 나타내는 경우 다음과 같이 코드를 작성할 수 있습니다.

import PySimpleGUI as sg
import matplotlib.pyplot as plt

# 데이터 준비하기
titles = [item[0] for item in data]
ratings = [float(item[1]) for item in data]

# 그래프 그리기
plt.bar(titles, ratings)
plt.xlabel('영화 제목')
plt.ylabel('평점')
plt.title('네이버 영화 평점')
plt.xticks(rotation=45)
plt.tight_layout()

# 그래프를 이미지로 저장하기 위해 임시 파일 생성
plt.savefig('temp.png')
plt.close()

# PySimpleGUI를 사용하여 그래프 출력하기
layout = [[sg.Image('temp.png')]]
window = sg.Window('영화 평점 시각화', layout)
event, values = window.read()
window.close()

참고 자료