지방이의 Data Science Lab

[Python] 새로고침 후 장바구니 담기 자동 클릭 코딩 (세잔느 니트를 사보자) 본문

Python Selenium/Web Mecro

[Python] 새로고침 후 장바구니 담기 자동 클릭 코딩 (세잔느 니트를 사보자)

[지현] 2020. 12. 27. 00:16

세잔느는 장바구니에 담는 것까지가 어렵기 때문에 

장바구니에 담는 자동화 클릭 코딩을 만들어 보고자 한다.

이 가디건을 장바구니에 담고자 한다.

 

 

 

완성 동영상은 아래와 같다.

 

 

 

 

 

 

 

세잔느 사이트에 들어가보면 아래 사진(인기없는 다른 옷)처럼 ADD TO BASKET이 뜬다면 살 수 있는 경우이다.

Add to basket이 가능한 경우

 

그런데 아래 두 사진처럼 IN ANOTHER BASKET이거나 CREATE AN ALERT면 

누군가 장바구니에서 안빼고 대기중이거나 품절된 경우이다.

이 경우 새로고침을 누르도록 만들고자 한다. 

살 수 없는 경우 두 가지

 


0. 파이썬 설치

 

1.  크롬 드라이버 설치

크롬 드라이버를 설치한다. 

설치하기 위해 먼저 자신의 크롬 버전을 아래 사이트에서 확인한다.

www.whatismybrowser.com/detect/what-version-of-chrome-do-i-have

 

What version of Chrome do I have?

Wondering what version of Chrome you're running? This page will tell you if you're running Chrome and what version it is

www.whatismybrowser.com

그 후 자신의 버전에 맞는 크롬 드라이버를 아래 사이트에 들어가서 설치한다.

chromedriver.chromium.org/downloads

 

Downloads - ChromeDriver - WebDriver for Chrome

WebDriver for Chrome

chromedriver.chromium.org


2. 셀레니움 설치 

주피터 창이나 Anaconda Prompt에서 아래 코드를 입력 후 설치한다.

1
pip install selenium
1
2
from selenium import webdriver
import time

설치한 크롬 드라이버를 파이썬내에서 가져온다.

아래 부분은 그대로 복사/붙여넣기 하는 것이 아닌 자신이 설치한 경로를 입력해야 한다.

C:\Users\user\Documents\Python Scripts\chromedriver.exe

1
driver = webdriver.Chrome(executable_path=r'C:\Users\user\Documents\Python Scripts\chromedriver.exe')

 

세잔느 사이트에서 하얀 가디건 s사이즈를 사고자 새로고침하고 담을 수 있다면 담도록 코드를 만들고자 한다.


3. 사이트 띄우기

1
2
url = 'https://www.sezane.com/us/product/georges-jumper/ecru#size-S'
driver.get(url)
 

이 코드를 입력하고 실행하면 아래 사이트처럼 자동으로 열린다.


 

4. 버튼을 통해 로직짜기

 

사이트 내에서 IN ANOTHER BASKET인 경우 새로고침하고

ADD TO BASKET이면 클릭하도록 만드는 것을 하고자 한다.

 

따라서 글씨를 가져와 로직을 짜려고 시도하고 있다.

 

 

사이트에서 F12를 눌러 글씨 기준 어떻게 작동하는지 확인한다.

 

ADD TO BASKET이 아닌 경우에도 글자가 담겨있는 것을 확인

 

ADD TO BASKET을 우클릭 하면 PATH를 쉽게 찾을 수 있다. 

텍스트를 기준으로 WHILE문을 실행하고자 한다.

 

4-1. XPATH찾는 법

 

xpath를 입력하는 게 사람마다 다양하게 가르쳐 주고 div class이런 부분 어떻게 읽어야하는지 검색해보는데 

그렇게 하지 않아도 된다. (태그, 속성 이런거로 xpath = '//태그'이런식으로 입력하지 않아도 된다는 뜻.) 

 

가장 간단한 방법은 아래 사진처럼 원하는 걸 찾았다면 간단하게 copy xPath를 누르면 된다.

XPATH 찾는 법

 

글자가 나왔습니다.

사이트에서 담을 수 있기 된다면 Add To Basket이라 뜨게 된다. 

 

Add To Basket이 뜨지 않는 다른 경우는 

1) IN ANOTHER BASKET

2)CREATE AN ALERT

위 두가지 경우인데 이 때는 element.text를 확인하면 ' '로 나온다.

따라서 글씨를 기준으로 while문을 짜려고 한다.

 

(while문에 대한 설명은 아래 사이트를 참조)

realpython.com/python-while-loop/

 

Python "while" Loops (Indefinite Iteration) – Real Python

In this tutorial, you'll learn about indefinite iteration using the Python while loop. You’ll be able to construct basic and complex while loops, interrupt loop execution with break and continue, use the else clause with a while loop, and deal with infin

realpython.com

While문을 기준으로 코드를 짠다면 다음과 같다.

1
2
3
4
5
6
7
8
9
10
xpath_add_to_bask = '/html/body/main/article/div[2]/div/div[2]/div[3]/form/p/button[1]'
 
while True
    element = driver.find_element_by_xpath(xpath_add_to_bask)
    if element.text == 'ADD TO BASKET':
        element.click()
        break 
    else :
        driver.refresh()
        driver.implicitly_wait(1)
 

 

5. 알람 사운드 넣기 

장바구니에 담을 수 있을 때까지 노트북은 무한 새로고침될 테니 성공하면 소리가 나도록 만들고자 한다.

1
2
import winsound
winsound.Beep(440 , 1000#Hz, milliseconds 

 

결론

완성 코드는 아래와 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from selenium import webdriver
import winsound
 
driver = webdriver.Chrome(executable_path=r'C:\Users\user\Documents\Python Scripts\chromedriver.exe')
 
url = 'https://www.sezane.com/us/product/georges-jumper/ecru#size-S'
driver.get(url)
 
xpath_add_to_bask = '/html/body/main/article/div[2]/div/div[2]/div[3]/form/p/button[1]'
 
while True
    element = driver.find_element_by_xpath(xpath_add_to_bask)
    if element.text == 'ADD TO BASKET':
        element.click()
        winsound.Beep(440 , 1000#Hz, milliseconds 
        break 
    else :
        driver.refresh()
        driver.implicitly_wait(1)
 

 

 

 

 

 

Comments