본문 바로가기
데이터분석/크롤링

파이썬 웹 크롤링 환경세팅(VScode, miniconda, selenium) 및 예시코드

by 코듀킹 2023. 12. 10.

이 글에서는 크롤링을 위한 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

miniconda-가상환경-설치완료
가상 환경 설정 완료되었을 때 출력되는 명령어

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파일 저장

 

 

댓글