import requests
from bs4 import BeautifulSoup
url = "https://search.naver.com/search.naver?query=제품명+리뷰"
headers = {"User-Agent": "Mozilla/5.0"}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")
reviews = soup.find_all("div", class_="review_content")
for review in reviews:
print(review.text.strip())
📌 주의: 네이버는 robots.txt에서 크롤링을 제한할 수 있으므로 API 사용을 고려해야 합니다.
🌍 구글 리뷰 크롤링하기 (Selenium 활용)
구글 리뷰는 동적 렌더링되므로 Selenium을 사용해야 합니다.
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# 크롬 드라이버 실행
driver = webdriver.Chrome()
driver.get("https://www.google.com/maps/place/장소명")
time.sleep(3)
# 리뷰 수집
reviews = driver.find_elements(By.CLASS_NAME, "review-text")
for review in reviews:
print(review.text)
driver.quit()
📌 팁: 리뷰가 많을 경우 스크롤을 내리는 자동화 코드가 필요합니다.
🛒 쇼핑몰(쿠팡) 리뷰 크롤링하기
쿠팡은 API를 제공하지 않으므로 requests와 BeautifulSoup을 활용합니다.
import requests
from bs4 import BeautifulSoup
url = "https://www.coupang.com/vp/products/상품번호?itemId=아이템번호"
headers = {"User-Agent": "Mozilla/5.0"}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")
reviews = soup.find_all("span", class_="sdp-review__article__list__review__content")
for review in reviews:
print(review.text.strip())
⚠️ 쿠팡은 크롤링을 강하게 제한하므로 조심해야 합니다.
✅ 크롤링할 때 주의할 점
robots.txt 확인: 크롤링 가능 여부를 먼저 확인하세요.
서비스 이용 약관 준수: 불법적인 크롤링은 법적 문제가 될 수 있습니다.
Rate Limiting 적용: 과도한 요청은 IP 차단을 유발할 수 있습니다.
API 활용 고려: 네이버, 구글, 쇼핑몰의 공식 API를 사용하는 것이 안전합니다.
🎯 결론
이 글에서는 네이버, 구글, 쇼핑몰 리뷰를 파이썬으로 크롤링하는 방법을 소개했습니다. 크롤링을 활용하면 리뷰 데이터를 효과적으로 수집하여 마케팅 분석, 소비자 트렌드 연구, 상품 개선 등에 활용할 수 있습니다.
하지만 크롤링 윤리와 법적 이슈를 준수하며 사용하는 것이 중요합니다. 크롤링이 어렵다면 공식 API를 이용하는 것도 좋은 방법입니다.
네이버 리뷰 메인 크롤링 코드
try:
iterations = int(iteration_entry.get())
for _ in range(iterations):
for page_num in range(2, 13): # 2부터 13까지 반복
try:
review_elements = driver.find_elements(By.XPATH, '//*[@id="REVIEW"]/div/div[3]/div[2]/ul/li/div/div/div')
for review in review_elements:
try:
rating = review.find_element(By.XPATH, './/div[1]/div/div[1]/div[1]/div[2]/div[1]/em').text
date = review.find_element(By.XPATH, './/div[1]/div/div[1]/div[1]/div[2]/div[2]/span').text
product = review.find_element(By.XPATH, './/div[1]/div/div[1]/div[1]/div[2]/div[3]').text
review1 = review.find_element(By.XPATH, './/div[1]/div/div[1]/div[1]/div[2]/div[3]/dl').text
review2 = review.find_element(By.XPATH, './div[1]/div/div[1]/div[2]/div[1]').text
reviews.append([rating, date, product, review1, review2])
except Exception:
continue
update_table()
next_page_button = driver.find_element(By.XPATH, f'//*[@id="REVIEW"]/div/div[3]/div[2]/div/div/a[{page_num}]')
driver.execute_script("arguments[0].click();", next_page_button)
time.sleep(2)
except Exception as e:
messagebox.showerror("Error", f"페이지 {page_num} 이동 중 오류 발생: {str(e)}")
break
except Exception as e:
messagebox.showerror("Error", f"리뷰 추출 중 오류 발생: {str(e)}")
리뷰를 크롤링 하는 이유는 브랜딩을 위해서 아주 중요한 역할을 합니다.
수집된 리뷰로 고객의 니즈를 분석이 가능하고, 유사한 제품을 개발할때 단점은 보완하고, 장점은 더욱 부각시킬수 있습니다.