본문 바로가기

자동화/Selenium

웹 크롤링으로 플레이스토어 리뷰 Excel에 저장하기 (With Python)

728x90

웹 크롤링으로 플레이스토어 리뷰를 뽑아 엑셀에 자동 저장하여 편하게 리뷰 항목들을 볼 수 있는 코드입니다. 

 

리뷰 목록을 보기 위해서 리뷰 상세로 진입해야 하는데 리뷰 상세로 진입하기 위해 find_elements로 찾은 후 버튼 클릭으로 진입하였습니다.

 

elements = driver.find_elements(By.CLASS_NAME, 'VfPpkd-Bz112c-LgbsSe.yHy1rc.eT1oJ.QDwDD.mN1ivc.VxpoF') #리뷰 상세로 진입하기 위한 class

elements[2].click() #3번째 항목이 리뷰 상세로 진입하기 위한 버튼
time.sleep(2)

 

리뷰 상세로 진입한 후 스크롤을 내려야 목록이 추가로 보여서 스크롤을 내리기 위해 여러 방법을 찾아봤는데 쉽지 않았습니다 ㅠㅠ

 

 

여러 방법을 시도하던 중 pyautogui 라이브러리를 통해 키보드 키를 누를 수 있는 방법을 찾았고 pagedown 키를 여러번 눌러서 목록을 추가로 불러왔습니다. range() 내 숫자 변경을 통해 리뷰 개수를 더 많이 가져올 수 있습니다.

 

for i in range(2): #원하는 횟수만큼 pagedown 키 누르기
    pyautogui.press('pagedown')

 

리뷰 상세로 진입 전 딤드된 화면에서 대표 리뷰가 3개 보이기 때문에 중복 방지를 위해 4번째 리뷰 항목부터 리스트에 데이터를 추가하였습니다.

 

reviews = driver.find_elements(By.CLASS_NAME, 'h3YV2d') #리뷰 class값
grades = driver.find_elements(By.CLASS_NAME, 'iXRFPc') #평점 class값
dates = driver.find_elements(By.CLASS_NAME, 'bp9Aid') #날짜 class값

li = [] #데이터 묶음 저장할 리스트

for i in range(len(reviews)):
    if i < 3: #리뷰 상세 외 대표 리뷰 3개 항목이 있기 때문에 중복 제외하기 위함
        continue
    else:
        li.append([dates[i].text, grades[i].get_attribute('aria-label')[10] + '점', reviews[i].text]) #각 항목 리스트에 저장

 

추출한 데이터를 Excel 파일을 생성한 후 쓰기로 추가하여 Excel에서 목록으로 볼수 있게 자동 저장하였습니다.

 

wb = Workbook() #Workbook 생성
ws = wb.active #시트 활성화
ws.title = 'review' #시트 타이틀 설정

ws.append(['날짜', '평점', '리뷰 내용']) #첫 행에 저장할 데이터 항목 추가

for data in li:
    ws.append(data) #추출한 데이터 엑셀 파일에 쓰기

wb.save('/Users/user/Desktop/playstore.xlsx') #해당 경로에 엑셀 파일 저장

 

전체 코드입니다. 몇백개 리뷰를 크롤링 하는데 긴 시간이 소요되지 않아 원하는 앱 리뷰를 볼 때 편하게 사용할 수 있습니다.

 

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
import time
import pyautogui
from openpyxl import Workbook

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))

driver.get('https://play.google.com/store/apps/details?id=com.titicacacorp.triple') #크롤링 하고 싶은 플레이스토어 앱 URL
time.sleep(2)

elements = driver.find_elements(By.CLASS_NAME, 'VfPpkd-Bz112c-LgbsSe.yHy1rc.eT1oJ.QDwDD.mN1ivc.VxpoF') #리뷰 상세로 진입하기 위한 class

elements[2].click() #3번째 항목이 리뷰 상세로 진입하기 위한 버튼
time.sleep(2)

driver.find_element(By.CLASS_NAME, 'RHo1pe').click() #키를 누르기 위해 리뷰 상세 내 class 클릭
time.sleep(2)

for i in range(2): #원하는 횟수만큼 pagedown 키 누르기
    pyautogui.press('pagedown')

time.sleep(2)

reviews = driver.find_elements(By.CLASS_NAME, 'h3YV2d') #리뷰 class값
grades = driver.find_elements(By.CLASS_NAME, 'iXRFPc') #평점 class값
dates = driver.find_elements(By.CLASS_NAME, 'bp9Aid') #날짜 class값

li = [] #데이터 묶음 저장할 리스트

for i in range(len(reviews)):
    if i < 3: #리뷰 상세 외 대표 리뷰 3개 항목이 있기 때문에 중복 제외하기 위함
        continue
    else:
        li.append([dates[i].text, grades[i].get_attribute('aria-label')[10] + '점', reviews[i].text]) #각 항목 리스트에 저장

wb = Workbook() #Workbook 생성
ws = wb.active #시트 활성화
ws.title = 'review' #시트 타이틀 설정

ws.append(['날짜', '평점', '리뷰 내용']) #첫 행에 저장할 데이터 항목 추가

for data in li:
    ws.append(data) #추출한 데이터 엑셀 파일에 쓰기

wb.save('/Users/user/Desktop/playstore.xlsx') #해당 경로에 엑셀 파일 저장

driver.close()


 

코드 실행 후 Excel 파일을 열어보면 리뷰 목록을 확인할 수 있습니다. (저는 트리플 앱 리뷰를 크롤링 해보았습니다.)

 

 

728x90