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
'자동화 > Selenium' 카테고리의 다른 글
핫딜게시판 목록 리스트 자동화하여 추출 (0) | 2022.11.08 |
---|---|
과거 1달 국내주식 시가총액 순위 자동화로 추출하기 (0) | 2022.11.06 |
웹 크롤링으로 iOS 앱스토어 리뷰 Excel에 저장하기 (With Python) (0) | 2022.11.01 |
버거킹 설문조사 Selenium으로 자동화하기 (0) | 2022.10.27 |
Selenium Chromedriver 파일 설치 없이 사용하기 (0) | 2022.10.24 |