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 : 문자 깨짐 방지
결과물
'개인공부 > Tensorflow' 카테고리의 다른 글
94. 딥러닝 기초 이론 (6)과적합 해결 (0) | 2021.12.31 |
---|---|
93. 딥러닝 기초 이론 (5)딥러닝 학습 방법 (0) | 2021.12.30 |
91. 딥러닝 기초 이론 (4)퍼셉트론, 신경망 (0) | 2021.12.27 |
90. 딥러닝 기초 이론 (3)활성화함수 (0) | 2021.12.25 |
89. 딥러닝 기초 이론 (2)회귀와 분류 (0) | 2021.12.24 |