본문 바로가기
데이터 스킬업/웹크롤링

[파이썬: 웹크롤링] #08 데이터의 시각화, 엑셀 만들기! with openpyxl

by 티챠림 2022. 6. 12.

[왕초보 웹크롤링 따라하기] 데이터 시각화, exel 변환, 파이썬 도표 만들기, openpyxl, Workbook 


#08 데이터의 시각화, 엑셀 만들기!  with 파이썬


 


이번에는 웹에서 추출한 데이터를 시각화해보려고 한다. 파이썬으로 시각화 하는 방법은 3가지가 있다. 첫째, 데이터를 엑셀 파일로 출력하기.둘째, 파이참에서 바로 도표화 시키기. 셋째, 쥬피터노트에서 도표화 시키기다.

 

  데이터, 엑셀로 변환하기 

파이참에서 추출한 데이터를 엑셀 표로 변하기 위해서는 openpyxl 모듈의 활성화가 필요하다. openpyxl 모듈은 파이참으로 엑셀 프로그램을 제어할 수 있게 해준다. 설치해 주자.

pip install openpyxl

모듈설치
terminal에 들어가 openpyxl 모듈을 설치한다.

 

설치를 마친 후 from openpyxl improt Workbook을 적어 모듈을 활성시킨다. Workbook은 엑셀을 열고, 작성하는 기능을 한다. 엑셀을 제어할 수 있게 되었으니 엑셀에 데이터를 입력하는 함수 Workbook(write_only=True)와 엑셀 시트를 설정하는 메소드 .create_sheet('시트 이름')로 엑셀 파일을 만들어 준다.

#openpyxl 모듈 활성화
from openpyxl import Workbook  

#엑셀 제어
wb = Workbook(write_only=True)  #엑셀에 데이터 입력을 활성화 
ws = wb.create_sheet('6월 첫째주 예능 순위')  #엑셀 시트 설정 *ws(엑셀시트)는 비어있는 [리스트]로 생성

 


 

엑셀의 워크시트는 기본적으로 비어있 [리스트]의 형태를 가진다. 워크시트에 생성되는 표는 열(culomn)과 행(row)로 구성되는데, culomn이 기준이 되어 그에 맞는 row가 들어가는 식이다. 즉, 여러개의 리스트를 세로로 배치한 것과 동일하다. *리스트 = 데이터의 묶음 = 표의 행(row)

 

 


 

엑셀에서 표를 만들기 위해 워크시트(ws)의 column을 먼저 지정해줘야 하는데, 추가해줘야 하는 컬럼은 '순위'와 '프로그램명'이다. 2개의 컬럼을 하나의 리스트로 묶어주고 묶은 컬럼 리스트를 ws(워크시트)에 넣어주는 것이다. ws에 리스트를 추가하기 위해 리스트에 요소를 추가하는 append()를 사용한다.

from openpyxl import Workbook  

wb = Workbook(write_only=True) 
ws = wb.create_sheet('6월 첫째주 예능 순위')  #워크시트(ws) = 표 = 빈 리스트
columns = ['순위', '프로그램명']  #컬럼 리스트(columns)
ws.append(columns)

 

이제 column 및으로 row 값을 표에 추가해 주면 된다. 만들어둔 크롤링 코드는 '프로그램명'만 출력하기 때문에 '순위'를 추가해주자. 프로그램명의 순서가 순위와 동일하니 프로그램명이 추출 될때마다 번호를 매겨주기로 했다.

 

ranking = 0   #'순위' 데이터 값 정의

for tag in program_name:
    ranking = ranking + 1   #for문 반복마다 1씩 숫자가 오름
    name = tag.get_text()
더보기

출력될 때마다 1씩 늘어나는  raking를 정의해 주고 한번 반복할 때마다 숫자가 1씩 더해지도록 설정해줬다.  for문이 1번 돌 때 마다 ranking과 name에 해당하는 요소가 하나씩 추출된다.

 

ranking = 0

for tag in Program_name:
    ranking = ranking + 1
1회 시행 ranking +1   0 + 1 1
2회 (ranking +1) + 1   0 + 1 + 1  2
...(반복)... (ranking +1) + 1  + 1 ... 0 + 1 + 1 + ... ... 

 

 

이제 ranking(순위)와 name(프로그램명) 한 쌍을 한개의 row 리스트로 묶고, 워크시트(표)에 입력만 해주면 된다. 리스트 추가는 .append()를 사용해야 한다.

ranking = 0

for tag in program_name:
     ranking = ranking + 1  
     name = tag.get_text()
     row = [ranking, name]  # 순위와 프로그램명 한쌍을 row로 지정 
     ws.append(row)  # row를 워크시트에 추가

 

 

마지막으로 wb.save('파일명').xlsx로 엑셀을 저장해주기만 하면 끝! 좌측 폴더 창을 열면 엑셀파일이 만들어져 있다. 만들어진 엑셀파일을 열어 생각한대로 잘 만들어졌는지 확인해보자.

import requests
from bs4 import BeautifulSoup
from openpyxl import Workbook

response = requests.get("https://search.naver.com/search.naver?where=nexearch&sm=tab_etc&mra=blUw&qvt=0&query=05월31일주%20예능%20시청률")
html_data = BeautifulSoup(response.text, 'html.parser')
program_names = html_data.select('td>p>a')
program_name = program_names[::2]

wb = Workbook(write_only=True)
ws = wb.create_sheet('6월 첫째주 예능 순위')
columns = ['순위', '프로그램명']
ws.append(columns)


ranking = 0   #'순위' 데이터 값 정의

for tag in program_name:
    ranking = ranking + 1
    name = tag.get_text()
    row = [ranking, name]
    ws.append(row)

wb.save('엑셀표.xlsx')

엑셀표_저장
엑셀 파일 만들기 까지 성공!
완성된_엑셀표
'순위'와 '프로그램명'이 표로 잘 정리되어 있다. Clear!!

 


▼다음편 이어보기▼

 

[ep01: 웹크롤링] #8 리스트로 표(DataFrame) 만들기 with 파이썬

Teaser Copy. 퍼포먼스 마케팅, 그로스해킹, 데이터 측정을 위한 웹 데이터 수집. 파이썬으로 웹 데이터 수집을 자동으로! [왕초보 웹크롤링 따라하기] 데이터 시각화, 파이썬 도표 만들기, 판다스(

charimlab.tistory.com

댓글