import pandas as pd #데이터프레임
from selenium import webdriver #module
import time #화면 일시 정지



1. 데이터프레임 생성

data = pd.DataFrame(data=[], columns=['앱이름','리뷰','별점','날짜'])




2. driver 객체 생성

path = r"C:\ITWILL\5_Tensorflow\workspace"
driver = webdriver.Chrome(path + '/chromedriver.exe')




3. url 이동 - google play store 리뷰

driver.get('https://play.google.com/store/apps/details?id=com.devsisters.ck&hl=ko&gl=US')

 

리뷰 모두 보기 클릭 

driver.find_element_by_xpath('/html/body/div[1]/div[4]/c-wiz/div/div[2]/div/div/main/div/div[1]/div[6]/div/span/span').click()


스크롤 다운 사용자 함수 생성

def scroll_down(driver):
    driver.execute_script("window.scrollTo(0, 999999999999)")
    time.sleep(1)


사용자 함수 실행

scroll_down(driver)




5. 주소 새로고침 (에러 방지)

driver.get('https://play.google.com/store/apps/details?id=com.devsisters.ck&hl=ko&gl=US&showAllReviews=true')

 

#데이터 수집
app_name = driver.find_element_by_css_selector('.AHFaub')
app_name.text #'쿠키런: 킹덤'

#리뷰 수집
reviews = driver.find_elements_by_css_selector('.UD7Dzf')
reviews[0].text #'쿠킹덤완전재밌어요...

#별점 수집
star_grades = driver.find_elements_by_xpath('//div[@class="pf5lIe"]/div[@role="img"]')
star_grades[0].get_attribute("aria-label")

#날짜 수집
dates = driver.find_elements_by_css_selector('.p2TkOb')
dates[0].text #'2021년 11월 23일'




6. 사용자 함수 생성

def crawl(driver, data, k):
    
    #어플명, 리뷰, 별점, 날짜 수집
    app_name = driver.find_element_by_css_selector('.AHFaub')
    reviews = driver.find_elements_by_css_selector('.UD7Dzf')
    star_grades = driver.find_elements_by_xpath('//div[@class="pf5lIe"]/div[@role="img"]')
    dates = driver.find_elements_by_css_selector('.p2TkOb')
    
    #k개의 리뷰 수집
    for i in range(k):
        tmp = []
        tmp.append(app_name.text)
        tmp.append(reviews[i].text)
        tmp.append(star_grades[i].get_attribute('aria-label'))
        tmp.append(dates[i].text)
        
        #수집한 1명의 리뷰를 프레임에 추가
        tmp = pd.DataFrame(data=[tmp], columns=data.columns)
        data = pd.concat([data,tmp])
        
    print(app_name.text + "앱 리뷰 수집 완료")
    
    return data


리뷰 50개 수집해보기

scroll_down(driver)
data = crawl(driver, data, 50) #쿠키런: 킹덤앱 리뷰 수집 완료


인덱스 리셋

data.reset_index(inplace=True, drop=True)
data.head() #[5 rows x 4 columns]





7. csv파일로 내보내기

from pandas import DataFrame
data.to_csv(r'C:\ITWILL\5_Tensorflow\workspace\chap06_Selenium_Crawling\lecture\review.csv', sep=',', na_rep='NaN', encoding='utf-8-sig')
#seperator : 구분자, na_rep : 결측값 표기, encoding : 문자 깨짐 방지

 

결과물

 

 

 

 

참고 : https://western-sky.tistory.com/51

+ Recent posts