파이썬 개발 공유

파이썬, 도매처 주문 넣기 자동화 (feat. 온라인 셀러, 스마트 스토어)

happyrichman 2021. 2. 4. 06:24

운영 중인 스마트 스토어에 주문이 들어오면, 카페 24로 만들어진 도매처의 B2B 사이트에서 주문을 넣는다.

여러 제품을 한나로 모아 파는 패키징 상품을 주력으로 하기 때문에 주문한 개 들어오면 10개를 장바구니에 담아야 한다. 이게 너무 귀찮아서 파이썬으로 코드를 짜 봤다. 

 

파이썬 3.9 버젼이며 파이참 환경에서 작성했다.

 

'변경해유' 부분은 모두 수정해야 제대로 작동할 것이다.

퍼가기는 막혀있지만 텍스트 파일로 만들어서 첨부파일 올리니 마음것 가져서 사용하시길 바란다.

 

도매처 주문 넣기 자동화 코드.txt
0.00MB

이번에 selenium에 대해 알아보고 공부하면서 작성하였다.

누군가 아래 코드가 필요하다면 selenium에 대한 기본 사용법은 따로 찾아보길 바란다.

 

아래 코드에서 도움이 될만한 내용은

 

1. 웹이 로드 되기까지 기다리는 방법

2. 크롬 전체화면으로 하기

3. 버튼을 클릭하게 하는 방법

4. 옵션 값을 선택 하는 방법

from selenium import webdriver
import time
from selenium.webdriver.chrome.options import Options

global driver
global options

options = Options()

#전체 화면으로 보기!
options.add_argument('--start-fullscreen')
driver = webdriver.Chrome(options=options)


def alert_accept():
       driver.switch_to.alert.accept()

def chromestart(start_url):
    driver.get(start_url)

def start():
    chromestart('B2B 주문 사이트 로그인 페이지')
    driver.find_element_by_name('member_id').send_keys('로그인할 아이디(변경해유~)')
    driver.find_element_by_name('member_passwd').send_keys('로그인할 비밀번호(변경해유~)')
    driver.find_element_by_class_name('로그인 버튼 클래스 이름(변경해유~)').click()


def pickin(pr):
    #변수 pr을 통해 받은 상품 주소로 이동하기
    driver.get(pr)
    driver.implicitly_wait(10)
    #각 상품페이지에 있는 장바구니 버튼의 클래스 이름을 찾아 클릭하기
    driver.find_element_by_class_name('btn_15_f2(변경해유~)').click()

def full_set(color):
    pr= [
        "http://상품1 주소(변경해유~)",
        "http://상품2 주소(변경해유~)",
        "http://상품3 주소(변경해유~)",
        "http://상품4 주소(변경해유~)",
        "http://상품5 주소(변경해유~)",
        "http://상품6 주소(변경해유~)",
        "http://상품7 주소(변경해유~)",
        "http://상품8 주소(변경해유~)",
        "http://상품9 주소(변경해유~)",
        "http://상품10 주소(변경해유~)",
    ]

    for i in range(len(pr)):
        driver.implicitly_wait(10)
        pickin(pr[i])

    #옵션이 2가지 있는 상품인데, 흰색 이냐 검정색이냐에 따라 마지막에 담는 상품하나가 바뀜

    #검정색 선택시
    if color == "b" or color == "B":
        driver.get("http://상품11_옵션검정색 주소(변경해유~)")
        driver.implicitly_wait(10)
        #해당 제품은 도매사이트에서 몇가지 옵션중 하나를 선택해야하는데, xpath로 내가 선택해야 할 옵션 값의 주소를 찍으면 편리함!
        driver.find_element_by_xpath("내가선택한 옵션값의 xpath(변경해유~)").click()
        time.sleep(0.3)
        #장바구니 버튼 클래스 이름으로 찾아서 클릭!
        driver.find_element_by_class_name('btn_15_f2(변경해유~)').click()

    #흰색 선택시
    else:
        driver.get("http://상품11_옵션흰색 주소(변경해유~)")
        driver.implicitly_wait(10)
        # 장바구니 버튼 클래스 이름으로 찾아서 클릭!
        driver.find_element_by_class_name('btn_15_f2(변경해유~)').click()


#장바구니 비우기!
def basket_clean():
    driver.get("http://장바구니 페이지 주소")
    driver.implicitly_wait(10)
    driver.find_element_by_xpath("장바구니 비우기 버튼 xpath").click()
    driver.implicitly_wait(10)
    try:
        driver.switch_to.alert.accept()
    except:
        "good"



start()

try:
    basket_clean()
except:
    "good"
time.sleep(0.5)


full_set("b")
print("검정 옵션을 패키지 상품을 장바구니에 담았습니다.")
print("5초간 대기")
time.sleep(5)
print("장바구니를 비우겠습니다.")
basket_clean()
print("완료, 5초간 대기")
time.sleep(0.5)
time.sleep(5)

full_set("w")
print("흰색 옵션을 패키지 상품을 장바구니에 담았습니다.")
print("5초간 대기")
time.sleep(5)
print("장바구니를 비우겠습니다.")
basket_clean()
print("완료")