일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- #크롤링 #웹문서
- 셀레니움
- 파이썬
- 코딩
- 파이썬 셀레니움
- 위도경도
- 구글 지오코드
- 숫자빼고 중복되는 코드동작법
- #비정형#카카오api#api#크롤링
- 웹매크로 #세잔느
- #비정형 데이터 #네이버 #지도 #크롤링
- 카카오APi
- #위도#경도#비정형데이터#크롤링
- 웹크롤링
- #K-means #Clustering
- Today
- Total
지방이의 Data Science Lab
[Python] 새로고침 후 장바구니 담기 자동 클릭 코딩 (세잔느 니트를 사보자) 본문
세잔느는 장바구니에 담는 것까지가 어렵기 때문에
장바구니에 담는 자동화 클릭 코딩을 만들어 보고자 한다.
완성 동영상은 아래와 같다.
세잔느 사이트에 들어가보면 아래 사진(인기없는 다른 옷)처럼 ADD TO BASKET이 뜬다면 살 수 있는 경우이다.
그런데 아래 두 사진처럼 IN ANOTHER BASKET이거나 CREATE AN ALERT면
누군가 장바구니에서 안빼고 대기중이거나 품절된 경우이다.
이 경우 새로고침을 누르도록 만들고자 한다.
0. 파이썬 설치
1. 크롬 드라이버 설치
크롬 드라이버를 설치한다.
설치하기 위해 먼저 자신의 크롬 버전을 아래 사이트에서 확인한다.
www.whatismybrowser.com/detect/what-version-of-chrome-do-i-have
그 후 자신의 버전에 맞는 크롬 드라이버를 아래 사이트에 들어가서 설치한다.
chromedriver.chromium.org/downloads
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을 우클릭 하면 PATH를 쉽게 찾을 수 있다.
텍스트를 기준으로 WHILE문을 실행하고자 한다.
4-1. XPATH찾는 법
xpath를 입력하는 게 사람마다 다양하게 가르쳐 주고 div class이런 부분 어떻게 읽어야하는지 검색해보는데
그렇게 하지 않아도 된다. (태그, 속성 이런거로 xpath = '//태그'이런식으로 입력하지 않아도 된다는 뜻.)
가장 간단한 방법은 아래 사진처럼 원하는 걸 찾았다면 간단하게 copy xPath를 누르면 된다.
글자가 나왔습니다.
사이트에서 담을 수 있기 된다면 Add To Basket이라 뜨게 된다.
Add To Basket이 뜨지 않는 다른 경우는
1) IN ANOTHER BASKET
2)CREATE AN ALERT
위 두가지 경우인데 이 때는 element.text를 확인하면 ' '로 나온다.
따라서 글씨를 기준으로 while문을 짜려고 한다.
(while문에 대한 설명은 아래 사이트를 참조)
realpython.com/python-while-loop/
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)
|
'Python Selenium > Web Mecro' 카테고리의 다른 글
[Python] 셀레니움으로 인스타그램 메시지 보내기 (0) | 2021.01.01 |
---|---|
[Python selenium] 매크로로 독코스 가디건을 사보자 (4) | 2021.01.01 |