본문 바로가기
코드리뷰/chatGPT(Python)코드

쿠팡 상품 리뷰 크롤링 차단 되세요?

by 디마드 2024. 5. 16.

상품을 선택하는 기준이 사람마다 다르겠지만, 내 경우는 상품 리뷰가 1순위다. 이것저것 꼼꼼히 살펴보고 조건이 충족되면 구매를 한다. 쿠팡 리뷰를 크롤링해 제휴 쇼핑페이지를 만들면 나 같은 사람들이 구매를 하지 않을까 하는 생각으로 코드를 작성했다. 

 

상품 리뷰로 이동하기

상품평 탭이 페이지를 스크롤 다운해야 나타난다. 마우스나 페이지 스크롤을 몇 번 내리면 가능하겠지만, 코드로 구현하려면 기준점이 필요한다. 키보드 End 버튼을 시간 간격을 두고 누르게 했다. 

for i in range(3):
    print(f"page down no :{i}")
    driver.find_element(By.TAG_NAME, "body").send_keys(Keys.END)    
    time.sleep(2)

"상품평"을 클릭해 리뷰페이지가 나타나게 한다. 동적인 코드로 구성되어 있어서 이런 이벤트가 필요하다. xpath를 이용해 데이터를 가져왔다. id나 css selector를 사용해도 무방하다. 

driver.find_element(By.XPATH,'//*[@id="btfTab"]/ul[1]/li[2]').click()

다시 시간 간격을 두고 리뷰를 읽어와 출력했다.

time.sleep(2)
review = driver.find_element(By.CSS_SELECTOR,".sdp-review__article__list__review__content.js_reviewArticleContent")
print(review.text)

실행하면 제대로 읽어오지 못한다. 탭 상 다른 메뉴는 클릭이 되는데 리뷰는 반응이 없다. 이거 때문에 몇 날 며칠을 헤맸다. 원인은 다음과 같다. 

쿠팡에서 자동 봇, 즉 크롤링으로 데이터를 수집하는 경우 제약을 둔 것 같다. 개발자 모드(F12)에서 콘솔에 들어가 아래 명령어를 입력하면 true나 false가 나온다. true는 자동 접속을 통한 데이터 수집, false는 사람이 브라우저를 통해 접속한 경우로 인식한다. 

(1) 봇(크롤링) 접속시 - 자동화 

(2) 일반적인 접속시 

봇 접속시 마치 사람이 직접 브라우저를 통해 입력한 것처럼 만들면 된다. 코드 한 줄이면 감쪽같이 해결된다. 

두~둥~

options.add_argument("--disable-blink-features=AutomationControlled")

리뷰 출력 결과 확인

반응형

댓글