이 글에서는 크롤링을 위한 VScode, miniconda 환경 세팅부터 Selenium, ChromDriver 자동관리 라이브러리 설치 방법까지 알아볼 것이다. 또한, 실습이 가능하도록 실제로 구글 스토어 댓글을 크롤링하는 코드를 제공한다.
파이썬 코딩을 할 때, 흔히 사용하는 Colab은 크롤링이 실제로 동작하는지 볼 수 없다. 반면 VScode에서는 이를 확인할 수 있다.다만 VScode에서는 .ipynb파일을 실행하려면 파이썬 에디터인 Jupyter Notebook이 필요하다. miniconda는 Jupyter Notebook과 파이썬에서 필요한 최소한의 라이브버리들, 그리고 가상환경을 관리할 수 있게 만들어진 툴이다. 따라서 환경세팅을 위해 VScode와 miniconda를 먼저 다운로드 받아야한다.
VScode, miniconda 다운로드
1. 컴퓨터 환경에 맞는 Visual Studio Code를 설치한다.
2.한글 팩은 Vscode의 extension 을 눌러 korean language pack을 검색한 후 설치한다.
3. 컴퓨터 환경에 맞춰 miniconda를 설치한다.
4. 시작 > anaconda prompt(miniconda3)를 실행한다.
5. python이 설치됐는지 확인한다. 버전이 뜨면 설치됐다는 뜻이다.
python --version
> Python 3.11.1
6. anaconda prompt(miniconda3) 에서 아래 명령어를 입력하여 miniconda 가상 환경을 생성한다.
# conda create -n [가상환경 이름] python=[원하는 파이썬 버전 i.e. 3.10.9]
conda create -n venv python=3.11.1
7. 가상환경에 접속하여 jupyter와 ipykernel을 설치한다.
# conda activate [가상환경 이름]
# pip install jupyter
# pip install ipykernel
# python -m ipykernel install --user --name [가상환경 이름] --display-name "[jupyter에 표시될 kernel의 이름]"
conda activate venv
pip install jupyter
pip install ipykernel
python -m ipykernel install --user --name venv --display-name "test"
8. VScode의 왼쪽 Extantion 메뉴에서 "Jupyter Notebook" 검색 후, 확장팩을 설치한다.
9. New 파일을 .ipynb로 생성하고, 코드를 실행하면 가상 환경을 선택하는 창이 뜬다. 만들어두었던 test 서버를 선택한다.
Selenium 및 ChromeDriver 설치
1. anaconda prompt(miniconda3)에서 Selenium 라이브러리를 설치한다.
pip install selenium
2. ChromeDriver 자동 관리 라이브러리를 설치한다.
pip install webdriver_manager
크롤링 예시 코드
아래 코드를 따라하면 구글 스토어에서 원하는 앱의 댓글들을 크롤링 할 수 있습니다. 코드에 대한 더 자세한 설명은 이 글을 참고하세요.
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
import pandas as pd
# 크롬 드라이버 생성
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))
# 구글 스토어 앱 검색
app_name = input("댓글을 가져올 앱 이름을 입력하세요")
url = "https://play.google.com/store/search?q={}&c=apps&hl=ko"
search_url = url.format(app_name)
driver.get(search_url)
# 댓글 클릭
driver.find_element(By.XPATH, '//*[@id="yDmH0d"]/c-wiz[2]/div/div/div[2]/div[2]/div/div[1]/div[1]/c-wiz[4]/section/header/div').click()
# 모달창 클릭 ( 목적: 스크롤을 하기 위해서)
driver.find_element(By.XPATH, '//*[@id="yDmH0d"]/c-wiz[2]/div/div/div[2]/div[2]/div/div[1]/div[1]/c-wiz[4]/section/header/div/div[2]').click()
# 스크롤 내리기
modal = driver.find_element(By.CLASS_NAME, 'fysCi')
for i in range(3):
driver.execute_script("arguments[0].scrollTo(0, arguments[0].scrollHeight)", modal)
time.sleep(3)
# 리뷰 작성자, 평점, 작성시간, 내용 가져오기
reviews = driver.find_elements(By.CLASS_NAME, 'RHo1pe')
data_list = []
# num_review = 0
for review in reviews:
# num_review += 1
# if num_review == 10:
# break
user_name = review.find_element(By.CLASS_NAME, 'X5PpBb').text # 유저 이름
# print(user_name)
rating = review.find_element(By.CLASS_NAME, 'iXRFPc').get_attribute('aria-label')[10] #평점
# print(rating)
review_time = review.find_element(By.CLASS_NAME, 'bp9Aid').text # 댓글 작성 시간
# print(review_time)
comment = review.find_element(By.CLASS_NAME, 'h3YV2d').text # 댓글 내용
# print(comment)
data = {
"댓글 작성자" : user_name,
"평점" : rating,
"댓글 작성시간" : review_time,
"댓글 내용" : comment
}
data_list.append(data)
# 파일 csv형태로 저장
df = pd.DataFrame(data_list)
df.to_csv("./google_store.csv", encoding="utf-8-sig") #csv파일 저장
'데이터분석 > 크롤링' 카테고리의 다른 글
파이썬 퀀트투자(3): 한국거래소 개별종목 지표 크롤링 (3) | 2024.10.09 |
---|---|
파이썬 퀀트투자(2): 한국거래소 업종 분류 현황 크롤링 (1) | 2024.10.09 |
파이썬 퀀트투자(1): 최근 영업일 기준 데이터 크롤링 (7) | 2024.10.09 |
BeautifulSoup을 이용한 정적 크롤링 개념 정리 및 실습 (0) | 2024.03.15 |
Selenium 모듈 설치 및 크롤링 환경세팅 (0) | 2023.04.19 |
댓글