[가구찾아] 쿠팡 크롤링 로그인하기

2024. 2. 6. 21:55·IT/Project

셀레니움을 사용해서 쿠팡 가구들을 크롤링 하려하던중

문제가 발생했다.

나는 쿠팡 파트너스 URL을 크롤링 해올 것이기에 크롤링할때 로그인 한 정보가 필요한데 계속해서
사진과 같은 "데이터 요청에 실패하였습니다" 라는 문구가 떳다.

내 첫번째 코드이다.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup
import time

# Chrome 드라이버 옵션 설정
chrome_options = Options()

# Chrome WebDriver 설정
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options)


try:
    # 쿠팡 파트너스 페이지 접속
    driver.get("https://partners.coupang.com/#affiliate/ws/link/0/%EC%84%A0%EB%B0%98")


        # 이메일 입력 필드에 이메일 입력
    email_input = driver.find_element(By.ID, "login-email-input")
    email_input.send_keys("kaak2203@naver.com")

    # 비밀번호 입력 필드에 비밀번호 입력
    password_input = driver.find_element(By.ID, "login-password-input")
    password_input.send_keys("비밀번호")

    # 로그인 버튼 클릭 (로그인 버튼의 실제 id 또는 class를 확인하여 수정해야 할 수 있습니다)
    login_button = driver.find_element(By.XPATH, "//button[@type='submit']")
    login_button.click()


    # 페이지 로드를 위해 잠시 대기
    time.sleep(5000)  # 페이지 로딩 시간에 따라 조절 필요

    # 링크 생성 버튼 클릭
    generate_link_button = driver.find_element(By.CSS_SELECTOR, "button.ant-btn.hover-btn.btn-generate-link")
    generate_link_button.click()

    # 클릭 후 동적 컨텐츠 로딩 대기
    time.sleep(5000)  # 동적 컨텐츠 로딩 시간에 따라 조절 필요

    # BeautifulSoup을 이용해 페이지의 HTML을 파싱
    soup = BeautifulSoup(driver.page_source, 'html.parser')

    # 생성된 링크 추출
    generated_link = soup.find("div", class_="unselectable-input shorten-url-input large").text
    print(generated_link)

finally:
    # WebDriver 종료
    driver.quit()

찾아보니 쿠팡에서 크롤링 방지를 설정해놓은 것이고 이것을 undefined로 변경하면 로그인할 수 있다는 것을 알게 되었다.

해서 아래 코드를 추가하니 해결되었다.

driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": """ Object.defineProperty(navigator, 'webdriver', { get: () => undefined }) """})

전체코드

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup
import time

# Chrome 드라이버 옵션 설정
chrome_options = Options()

# Chrome WebDriver 설정
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options)

driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": """ Object.defineProperty(navigator, 'webdriver', { get: () => undefined }) """})


try:
    # 쿠팡 파트너스 페이지 접속
    driver.get("https://partners.coupang.com/#affiliate/ws/link/0/%EC%84%A0%EB%B0%98")


        # 이메일 입력 필드에 이메일 입력
    email_input = driver.find_element(By.ID, "login-email-input")
    email_input.send_keys("kaak2203@naver.com")

    # 비밀번호 입력 필드에 비밀번호 입력
    password_input = driver.find_element(By.ID, "login-password-input")
    password_input.send_keys("비밀번호")

    # 로그인 버튼 클릭 (로그인 버튼의 실제 id 또는 class를 확인하여 수정해야 할 수 있습니다)
    login_button = driver.find_element(By.XPATH, "//button[@type='submit']")
    login_button.click()


    # 페이지 로드를 위해 잠시 대기
    time.sleep(5000)  # 페이지 로딩 시간에 따라 조절 필요

    # 링크 생성 버튼 클릭
    generate_link_button = driver.find_element(By.CSS_SELECTOR, "button.ant-btn.hover-btn.btn-generate-link")
    generate_link_button.click()

    # 클릭 후 동적 컨텐츠 로딩 대기
    time.sleep(5000)  # 동적 컨텐츠 로딩 시간에 따라 조절 필요

    # BeautifulSoup을 이용해 페이지의 HTML을 파싱
    soup = BeautifulSoup(driver.page_source, 'html.parser')

    # 생성된 링크 추출
    generated_link = soup.find("div", class_="unselectable-input shorten-url-input large").text
    print(generated_link)

finally:
    # WebDriver 종료
    driver.quit()
반응형
저작자표시 비영리 변경금지 (새창열림)

'IT > Project' 카테고리의 다른 글

[GPTs] 단대학식 - 1  (0) 2024.02.17
[GPTs] GPTs 묘지  (0) 2024.02.13
[가구찾아] GPTs 가구찾아주는 서비스 만들기 - 1  (0) 2024.02.06
[Project] AI MEDICO 최종 (글 수정중)  (0) 2024.02.02
[Project] EZPill 최종 (글 수정중)  (0) 2024.02.02
'IT/Project' 카테고리의 다른 글
  • [GPTs] 단대학식 - 1
  • [GPTs] GPTs 묘지
  • [가구찾아] GPTs 가구찾아주는 서비스 만들기 - 1
  • [Project] AI MEDICO 최종 (글 수정중)
생각 기록실
생각 기록실
AI(LLM)와 서비스 기획을 공부하며 작성하는 기술 블로그입니다. (feat. 영화리뷰를 곁들인..)
    반응형
  • 생각 기록실
    이러쿵 저러쿵
    생각 기록실
  • 전체
    오늘
    어제
  • 링크

    • Github
    • LindeIn
    • 분류 전체보기 (115)
      • 이러쿵 저러쿵 (5)
      • 정보통계 (7)
        • 데이터마이닝 (2)
        • 금융공학 (4)
      • IT (26)
        • Python (10)
        • AWS (5)
        • Github (2)
        • Project (8)
      • 리뷰 (29)
        • 영화 (22)
        • 책 (7)
      • 기타 (48)
  • hELLO· Designed By정상우.v4.10.3
생각 기록실
[가구찾아] 쿠팡 크롤링 로그인하기
상단으로

티스토리툴바