파이썬 웹 크롤링 기초 코드 작성법

파이썬 웹 크롤링의 기초 알아보기

웹 크롤링은 인터넷에서 데이터를 자동으로 수집하고 처리하는 기술로, 많은 사람들이 데이터 분석, 머신러닝, 연구 등의 목적으로 활용하고 있습니다. 이 글에서는 파이썬을 사용하여 웹 크롤링을 시작하기 위한 기본적인 환경 설정부터 코드 작성 방법까지 상세하게 설명드리겠습니다. 크롤링은 다양한 웹사이트에서 정보를 수집하는 유용한 방법이므로, 관심이 있는 분들께 많은 도움이 될 것입니다.

1. 작업 환경 설정

크롤링을 위해서는 먼저 파이썬 개발 환경을 설정해야 합니다. 여기서는 Visual Studio Code(VSCode)와 Miniconda를 사용하여 환경을 구성하는 방법을 안내하겠습니다.

  • 먼저, 컴퓨터에 맞는 Visual Studio Code를 설치합니다.
  • VScode에서 한글을 사용할 수 있도록 한글 언어 팩을 설치합니다.
  • 그 다음, Miniconda를 다운로드하고 설치합니다.
  • 설치가 완료되면, Anaconda Prompt를 실행하여 파이썬이 정상적으로 설치되었는지 확인합니다.

파이썬 설치 확인을 위해 다음 명령어를 입력합니다.

python --version

버전 정보가 표시되면 설치가 완료된 것입니다. 이후 가상 환경을 생성합니다.

conda create -n [환경이름] python=[원하는 파이썬 버전]

2. VSCode에서 Jupyter Notebook 사용하기

Jupyter Notebook은 데이터 과학과 크롤링 작업에 매우 유용한 도구입니다. 가상 환경을 설정한 후, 그 환경에 들어가 Jupyter와 필요한 패키지를 설치합니다.

conda activate [환경이름]
pip install jupyter
pip install ipykernel
python -m ipykernel install --user --name [환경이름] --display-name "[Jupyter에 표시될 이름]"

VSCode에서 Jupyter Notebook 확장팩을 설치한 후, 새 파일을 .ipynb로 만들어 코드를 실행해봅니다.

3. Selenium과 ChromeDriver 설치하기

웹 페이지의 동적 내용까지 크롤링하기 위해서는 Selenium 라이브러리를 사용하는 것이 좋습니다. Selenium은 웹 브라우저를 자동으로 조작할 수 있도록 도와줍니다. 다음 명령어로 Selenium을 설치합니다.

pip install selenium

또한, ChromeDriver를 자동으로 관리할 수 있도록 도와주는 라이브러리도 설치합니다.

pip install webdriver_manager

4. 실제 크롤링 코드 작성하기

이제 준비가 완료되었으니, 실제로 데이터를 크롤링할 코드를 작성해 보겠습니다. 이번 예제에서는 Google Play 스토어에서 특정 앱의 댓글을 크롤링하는 방법을 소개하겠습니다.

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 = []
for review in reviews:
  user_name = review.find_element(By.CLASS_NAME, 'X5PpBb').text # 유저 이름
  rating = review.find_element(By.CLASS_NAME, 'iXRFPc').get_attribute('aria-label')[10] # 평점
  review_time = review.find_element(By.CLASS_NAME, 'bp9Aid').text # 댓글 작성 시간
  comment = review.find_element(By.CLASS_NAME, 'h3YV2d').text # 댓글 내용
  data = {
    "댓글 작성자": user_name,
    "평점": rating,
    "댓글 작성 시간": review_time,
    "댓글 내용": comment
  }
  data_list.append(data)
# 파일을 CSV 형태로 저장
df = pd.DataFrame(data_list)
df.to_csv("./google_store_comments.csv", encoding="utf-8-sig")

위 코드를 통해 특정 앱의 댓글을 효과적으로 수집할 수 있습니다. 적절한 라이브러리를 설치하고 환경을 설정하면 크롤링을 손쉽게 진행할 수 있습니다.

5. 마무리

이렇게 파이썬을 이용한 기본적인 웹 크롤링 방법을 살펴보았습니다. 다양한 웹사이트에서 데이터를 효율적으로 수집하여 유용한 정보를 가공하는 데 큰 도움이 될 것입니다. 크롤링을 통해 필요한 데이터를 수집하고, 이를 활용하여 데이터 분석이나 머신러닝 모델에 적용할 수 있으니 많은 도전과 경험을 하시길 바랍니다. 다음 포스팅에서는 더 고급 기술과 응용 사례를 다루도록 하겠습니다.

자주 찾는 질문 Q&A

파이썬으로 웹 크롤링을 시작하려면 무엇이 필요할까요?

웹 크롤링을 하기 위해서는 파이썬 설치와 함께 여러 가지 라이브러리, 특히 Selenium과 ChromeDriver가 필요합니다.

VSCode에서 Jupyter Notebook을 어떻게 사용할 수 있나요?

가상 환경을 활성화한 후 Jupyter와 필요한 패키지를 설치하면 VSCode 내에서 Jupyter Notebook을 사용할 수 있습니다.

Selenium과 ChromeDriver는 어떤 용도로 사용되나요?

Selenium은 웹 브라우저를 자동으로 조작하는 도구이며, ChromeDriver는 이를 위해 Chrome 브라우저와 함께 작동합니다.

특정 앱의 댓글을 크롤링하는 방법은 무엇인가요?

댓글을 가져오기 위해서는 먼저 앱을 검색하고, 그 후 댓글 버튼을 클릭하여 댓글 내용을 스크롤하며 수집합니다.

크롤링한 데이터를 어떻게 저장하나요?

수집한 데이터를 Pandas 라이브러리를 사용해 DataFrame으로 변환한 뒤, CSV 파일 형식으로 저장할 수 있습니다.

답글 남기기