Ex. 07 Gmarket 수집

박산해·2025년 3월 27일

Ex07.Gmarket 수집

from selenium import webdriver as wb
from selenium.webdriver.common.by import By
import time

1. 브라우저 실행

driver = uc.Chrome()

2. 사이트 이동

driver.get("https://www.gmarket.co.kr/n/best")

selenium으로 사이트를 이동, 조작했을 때 컴퓨터로 인식해서 접근이 불가능 한 경우

감지가 되지 않는 브라우저를 사용

!pip install undetected-chromedriver

iimport가 필요하다

import undetected_chromedriver as uc

4. 첫번째 상품 클릭

title = driver.find_elements(By.CSS_SELECTOR,"#container > div.box__best-list > ul > li > a")
title[0].click()

5.상품이름, 상품가격

product = driver.find_element(By.CSS_SELECTOR,"#itemcase_basic > div > div.boxitem-info > h1")
price = driver.find_element(By.CSS_SELECTOR,"#itemcase_basic > div > div.box
price.price > span:nth-child(2) > strong")

뒤로가기

driver.back()

완성된 코드를 20번 반복하는 로직을 제작

product_list = []
price_list = []
for i in range(20) :
title = driver.find_elements(By.CSS_SELECTOR,"#container > div.boxbest-list > ul > li > a")
title[i].click()
time.sleep(1)
product = driver.find_element(By.CSS_SELECTOR,"#itemcase_basic > div > div.box
item-info > h1")
try :
price = driver.find_element(By.CSS_SELECTOR,"#itemcase_basic > div > div.boxprice.price > span:nth-child(2) > strong")
except :
price = driver.find_element(By.CSS_SELECTOR,"#itemcase_basic > div > div.box
price.price > span:nth-child(3) > strong")
product_list.append(product.text)
price_list.append(price.text)
driver.back()
time.sleep(1)

driver.quit()

이번 실습 정리

1) webdriver로 접근했을 때, 로봇이 감지 되는 경우 -> uc 변경해서 사용하자
2) 반복할 코드를 먼저 작성해 본다

  • 반복할 코드를 먼저 작성해 본다
  • for문으로 감싸준다 -> i의 위치만 지정한다(리스트의 인덱스 자리)
  • 화면이 바뀌면, 태그를 다시 찾아야한다.
  • time을 요청이 발생할때마다 넣어준다.
    3) 데이터를 수집할 때 화면마다 태그가 바뀐다면 예외처리(가격정보)
  • try : 오류 나기전의 시도할 코드
  • except : 오류 났을때 수집할 코드(정상가격)
    4) 크롤링을 할 때는 화면의 크기 영향, 네트워크 상태도 영향
  • 상황상황에 맞게 코드를 수정하는게 중요하다.

0개의 댓글