파이썬 단순업무 자동화 - 셀레니움으로 자료 저장 하기
본문 바로가기
▷ 도전/▷ Coding

파이썬 단순업무 자동화 - 셀레니움으로 자료 저장 하기

by wHatsyUP 2020. 12. 5.
728x90

 

수학 문제 풀이 알바를 하고 있죠.

여러 업체의 일을 하다보니, 업체마다 특징이 다르고, 요구사항도 다르고, 하여튼 다양합니다.

풀이 영상 제작하는 알바는 컴퓨터로 작업을 해서 여러모로 편리하긴 합니다.

업로드후 영상에 문제가 있거나 풀이가 이상하거나 하면 다시 올려줘야 하는데, 저번달, 그러니까 11월에 작업한 영상에 대한 반려항목 양이 좀 되네요.

초록색 타원 부분을 하나 하나 클릭하면서 내용을 확인 하려니 귀찮기도 하고 엄두도 나지 않고, 간만에 코딩으로 단순 작업을 간단히 해보려고 주피터 노트북을 켭니다.

코딩에 익숙치 않다 보니, 코딩하는데 하루종일이네요ㅜㅜ. 이정도 시간이면 반려영상 다 수정하고도 남았을것 같은 생각이....

어쨌든 대충 완성은 했군요.

from bs4 import BeautifulSoup
import time
from selenium import webdriver
import pandas as pd


'bookname = input("검색할 교재명을 입력하세요 >>>  ")'

driver = webdriver.Chrome()
driver.get('http://oooo-oooo.oo.oo/#/login')
time.sleep(1)

#아이디
driver.find_element_by_id('username').send_keys('0000')
#패스워드
driver.find_element_by_id('password').send_keys('0000')
#클릭
driver.find_element_by_xpath('//*[@id="app"]/div/div/div/div/div/div/div[1]/div/div[2]/div[2]/button').click()
time.sleep(1)

#컨텐츠 검수 페이지로 이동
driver.get('http://000000/#/pages/inspection-contents')
time.sleep(1)

#반려항목 체크
driver.find_element_by_xpath('//*[@id="__BVID__99"]/div[2]/label').click()

#교재명 입력
driver.find_element_by_id('__BVID__76').send_keys('고_미적분_0000_고2_참고서')
time.sleep(1)

#한창에 보이는 리스트 수량 정하기 (500개)
driver.find_element_by_xpath('//*[@id="__BVID__114"]/option[8]').click()
time.sleep(3)

#검색버튼 누르기
driver.find_element_by_xpath('//*[@id="benesApp"]/div/div/div[3]/div[1]/div/div[2]/div[1]/div/div/form/div/div[7]/button[2]').click()
time.sleep(2)

#반려목록 갯수
req0 = driver.page_source
soup0 = BeautifulSoup(req0, 'html.parser')
buttons = soup0.select('td button')
counts = len(buttons) + 1
print("반려항목수:  " + str(counts) + " 개")
#반려목록 버튼 확인
'''
for btn in buttons:
    print(btn.text)
'''
title = []
comment = []
#반려목록 텍스트 불러오기
for j in range(1, counts):
    xpath = '//*[@id="inspectionTable"]/tbody/tr[' + str(j) + ']/td[7]/button'
    driver.find_element_by_xpath(xpath).click()

    req = driver.page_source
    soup = BeautifulSoup(req, 'html.parser')
    titles = soup.select('.modal-title')
    subs = soup.select('.modal-body ')

    for i in titles:
        print(i.text)
        title.append(i.text)
    for k in subs:
        print(k.text)
        comment.append(k.text)

    driver.find_element_by_xpath('// *[ @ id = "inspectionRejectModal___BV_modal_footer_"] / button').click()
    #time.sleep(0.1)
result = []
for s in range(1,counts):
    result.append(str(s))
df = pd.DataFrame(result)
df['title'] = title
df['comment'] = comment

df.head()
print(df)
driver.close()

 

항상드는 생각이지만, 이게 맞나? 이게 효과적인 방법인가? 의문을 가지게 되네요 ㅡㅡ;

 

실행영상

 

잡다한 내용이 많았는데 필요한 내용만 정리 완료

반려 이유중 상당수가 소리와 싱크문제.....촬영후 하나하나 다 확인 할 수도 없고....뭔가 방법을 생각해 보야겠습니다.

다음에도 이렇게 많은 반려문항이 생기진 않겠죠?

 

오늘은 여기 까지

 

728x90

댓글