기록중

2021.07.12 오늘의 한일

lian_is_clone 2021. 7. 12. 18:10

전에 작성된것

완성형 selenium 제작하기

파이썬은 모듈화가 답이기때문?에

 

os 에서 처리되는 python 따로만들고 셀레늄으로 처리하는 python 따로 만들고

둘다 임포트하는 python 만들고 

python 하나에서 모두 처리될수 있게 변경하였다.

 

이제 대시보드를 만들어볼 예정이다. 

 

 

selenium으로 움직이는것만 모아둔 파이썬 코드

from selenium import webdriver
from selenium.webdriver import ActionChains
import time

driverpath= './chromedriver_win32/chromedriver91_101.exe'

def chromedriver(_url):
    options = webdriver.ChromeOptions()
    options.add_argument('--window-size=1920x1080')
    _driver = webdriver.Chrome(driverpath, options=options)
    _driver.get(_url)
    return _driver

def chromedriver_hide(_url):
    options = webdriver.ChromeOptions()
    options.headless = True
    options.add_argument('--window-size=1920x1080')
    options.add_argument("--disable-gpu")
    _driver = webdriver.Chrome(driverpath, options=options)
    _driver.get(_url)
    _driver.implicitly_wait(10)
    return _driver

def xpath_send_keys(_driver,_xpath,_send_keys):
    try:
        _driver.find_element_by_xpath(_xpath).send_keys(_send_keys)
        time.sleep(1)
    except:
        print('no serch send key')
        

def xpath_click(_driver,_xpath):
    try:
        _driver.find_element_by_xpath(_xpath).click()
        time.sleep(3)
    except:
        print('no serch btn\n'+_xpath)
        
def xpath_script(_driver,_xpath):
    try:
        test = _driver.find_element_by_xpath(_xpath).click()
        
    except:
        print('done err')
    

def scount(_driver, _xpath):
    result = False
    try:
        scount = _driver.find_element_by_xpath(_xpath).text
        if(int(scount) > 0 ):
            result = True
            return result
    except:
        print('scount err')
        return result

def payments(_driver):
    try:
        tbody = _driver.find_element_by_tag_name('tbody')
        rows = tbody.find_elements_by_tag_name('tr')
        for index, value in enumerate(rows):
            body=value.find_elements_by_tag_name("td")[6]
            if( "결제됨" in body.text):
                value.find_element_by_tag_name("td").click()
    except:
        print('payment err')

셀레늄으로 처리된 csv 데이터처리 파이썬 코드

import pandas as pd
import datetime as date
import numpy as np
import os.path as ospath
import shutil
import getpass

def os_move_rename():
    print('start-os_move_rename')
    #================== 날짜 ==================
    to_date = date.date.today()
    result = False
    #================== 모든 경로 ==================
    savepath = './savepath/'
    dowunlodepath = 'C:/Users/{}/Downloads/'.format(getpass.getuser())
    #================== 파일 이름 ==================
    dowunlodename = 'orders_export.csv'
    savename = 'filename{}.csv'.format(to_date)
    #================== 파일 확인 ==================
    if ospath.isfile(dowunlodepath+dowunlodename):
        shutil.move(dowunlodepath+dowunlodename, savepath+savename)
        print('end-os_move_rename.py')
        result = True
    else:
        print('file is no serch\nend-os_move_rename')
        
	return result

def os_transfrom():
    print('start-os_transfrom')
    #================== 날짜 ==================
    to_date = date.date.today()
    file_name = "./mypath/filename{}.csv".format(to_date)
    #================== 파일 유무 확인 및 결과 도출 ==================
    if ospath.isfile(file_name):
        files = pd.read_csv(file_name)
        result = pd.DataFrame()
        result['column1'] = files['column1']
        result['column2'] = files['column2']
        result['column3'] = np.NaN
        result['column4'] = files['column3'] + " " + files['column4']+" "+files['column5']
        result['column5'] = np.NaN
        result['column6'] = files['column6']
        result['column7'] = np.NaN
        result['column8'] = files['column8']
        result['column9'] = np.NaN
        result.fillna(method='ffill').to_excel('./results/result{}.xlsx'.format(to_date))
    else:
        print('file is no serch')

    print('end-os_transfrom')

실행코드

import selenium_def as shop
import data_processing as shop_os
import time

print('start-shopify.py')

#================== 페이지 띄우기 및 시작주소 확인 ==================
driver = shop.chromedriver('path/chromedriver.exe')
#================== 로그인 xpath 값 설정 ==================
input_id = 'xpath_id_text'
input_pw = 'xpath_pw_text'
btn_id = 'xpath_id_btn'
btn_pw = 'xpath_pw_btn'
#================== 로그인하기 ==================
shop.xpath_send_keys(driver,input_id,'id')
shop.xpath_click(driver, btn_id)
shop.xpath_send_keys(driver,input_pw,'pw')
shop.xpath_click(driver, btn_pw)
#================== 주문 내보내기 xpath 값 설정 ==================
span_count = 'xpath_counts'
btn_export = 'xpath_btn1'
btn_selects = 'xpath_btn2'
btn_done = 'xpath_btn3'
#================== 주문 확인하기 ==================
result = shop.scount(driver, span_count)
if result:
    shop.payments(driver)
    shop.xpath_click(driver, btn_export)
    shop.xpath_click(driver, btn_selects)
    shop.xpath_script(driver, btn_done)
	files = shop_os.os_move_rename()
    if files:
    	shop_os.os_transfrom()
print('end shopify.py')

 

 

대시보드 만들려고한다.

오케오케 

https://igson.net/%eb%8c%80%ec%8b%9c%eb%b3%b4%eb%93%9c-%eb%a7%8c%eb%93%a4%ea%b8%b0-%ed%94%84%eb%a1%9c%ec%a0%9d%ed%8a%b8-0-%ea%b5%ac%ec%a1%b0/

 

대시보드 만들기 프로젝트 #0. 구조 – IG Son

이 블로그에서는 여러가지 프로젝트와 그 정리본을 공유할 예정입니다. 우선 현재 실시간으로 개발중에 있는 나의 대시보드 만들기 프로젝트의 진행과정을 공유하도록 하겠습니다. <프로젝트

igson.net

여기를 참조할것이다.

 

 

'기록중' 카테고리의 다른 글

2021.07.15 오늘의 한일  (0) 2021.07.15
2021.07.13 오늘의 한일  (0) 2021.07.13
오늘도 잘 보지 않는 기술남기기(position: relative,absolute)  (0) 2021.06.29
오랫만에 쓰는 기록  (0) 2021.06.24
21.06.08  (0) 2021.06.08