상품을 선택하는 기준이 사람마다 다르겠지만, 내 경우는 상품 리뷰가 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")
리뷰 출력 결과 확인
반응형
'코드리뷰 > chatGPT(Python)코드' 카테고리의 다른 글
운동할 때 최고의 선택! 샥즈 오픈런 프로 골전도 블루투스 이어폰 리뷰 (0) | 2024.06.24 |
---|---|
네이버 쇼핑 리뷰 크롤링 (0) | 2024.05.06 |
삼성 갤럭시북3 360 NT750QFT-A51A: 다재다능한 노트북의 새로운 기준 (0) | 2024.05.06 |
댓글