안녕하세요?
일상의코딩, 일코입니다.
최근 여러 브라우저에서
한/글 문서를 읽을 수 있는 기능을 제공하고 있습니다.
대표적으로 네이버 웨일은
(파일을 서버로 업로드하는 과정을 거친 후에)
브라우저로 뷰어 기능을 거의 완벽하게 제공해줍니다.
크롬 브라우저 확장프로그램 중 하나인
hwp.js를 설치하면
크롬에서 hwp문서를 (완벽하진 않지만)
읽기전용으로 불러올 수도 있습니다.
그런데 이번에 소개해드리는 프로그램은
한컴오피스에서 공식적으로 제공하는 웹 hwp 편집기인
한컴스페이스입니다.
회원가입만 하시면 개인사용자에 한해서는
freemium이라는 무료 요금제로
2GB의 무료 스토리지와
한/글 프로그램에서 제공하는 대부분의 기능을 구현해놓은
웹 에디터를 무료로 사용하실 수 있으며,
편집 후에는 온라인 저장 및
다운로드가 가능합니다.
그리고 무엇보다 흥미로운 점은,
크롬브라우저를 사용하기 때문에!!!
selenium으로 문서작성 자동화가 가능하다는 것입니다.
이번 포스팅에서는 간단히
0. 한컴스페이스에 접속해 로그인하고,
1. 새 문서를 생성한 후,
2. 텍스트를 입력하고,
3. 다운받는 과정까지
코드로 한 번 진행해보겠습니다.
여러분의 PC에 파이썬과 크롬브라우저가 설치되어 있어야 하며,
아래의 코드를 실행하시려면 여러분의 파이썬 환경에
selenium, chromedriver_autoinstaller라는 모듈이 설치되어 있으면 됩니다.
커맨드창에서 pip install selenium chromedriver-autoinstaller 를 실행하셔서 모듈을 설치하시기 바랍니다.
1. 한컴스페이스 접속 및 로그인
from selenium import webdriver
import chromedriver_autoinstaller
from selenium.webdriver.common.by import By
chromedriver_autoinstaller.install()
driver = webdriver.Chrome()
# 접속
driver.get("https://space.malangmalang.com/")
2. 싸이월드타운 팝업 제거
if "다시 표시 안 함" in driver.page_source:
driver.find_element(by=By.CSS_SELECTOR, value="a.button__close").click()
3. 로그인
이메일주소 = "email@email.com"
패스워드 = "Your_pa$$w0rd"
driver.execute_script("MalangGNB.gnbLogin();")
driver.find_element(By.ID, "email").send_keys(이메일주소)
driver.find_element(By.ID, "password").send_keys(패스워드)
driver.find_element(By.CSS_SELECTOR, "button[type='submit']").click()
4. 새 문서(테스트1.hwpx) 생성하기
# 한/글 새 문서 클릭하고 파일명(테스트1) 입력
driver.find_elements(By.CSS_SELECTOR, "div.item__thumbnail")[0].click()
driver.find_element(By.CSS_SELECTOR, "input[name='newName']").clear()
driver.find_element(By.CSS_SELECTOR, "input[name='newName']").send_keys("테스트1")
driver.find_element(By.CSS_SELECTOR, "span[translate='CREATE']").click()
5. 새로 열린 한/글 에디터 창으로 이동하기(switch_to.window)
# 새로 열린 한/글 편집창으로 옮기기
driver.switch_to.window(driver.window_handles[-1])
6. 텍스트 입력하기
# 텍스트 입력하기
driver.find_element(By.CSS_SELECTOR, "body").send_keys("안녕하세요?")
driver.find_element(By.CSS_SELECTOR, "body").send_keys("\n반갑습니다!")
7. 다운로드하기
driver.find_element(By.CSS_SELECTOR, "div.property_title").click()
driver.find_element(By.CSS_SELECTOR, "div.d_download.btn_icon_inner").click()
8. 크롬창 닫기(셀레늄 종료)
driver.quit()
끝.
간단하죠?
전체 코드는 아래 붙여놓습니다.
from selenium import webdriver
import chromedriver_autoinstaller
from selenium.webdriver.common.by import By
chromedriver_autoinstaller.install()
driver = webdriver.Chrome()
# 한컴스페이스 접속
driver.get("https://space.malangmalang.com/")
# 팝업 제거
if "다시 표시 안 함" in driver.page_source:
driver.find_element(by=By.CSS_SELECTOR, value="a.button__close").click()
# 로그인
아이디 = "아이디"
패스워드 = "패스워드"
driver.execute_script("MalangGNB.gnbLogin();")
driver.find_element(By.ID, "email").send_keys(아이디)
driver.find_element(By.ID, "password").send_keys(패스워드)
driver.find_element(By.CSS_SELECTOR, "button[type='submit']").click()
# 한/글 새 문서 클릭하고 파일명(테스트1) 입력
문서이름 = "테스트1"
driver.find_elements(By.CSS_SELECTOR, "div.item__thumbnail")[0].click()
driver.find_element(By.CSS_SELECTOR, "input[name='newName']").clear()
driver.find_element(By.CSS_SELECTOR, "input[name='newName']").send_keys(문서이름)
driver.find_element(By.CSS_SELECTOR, "span[translate='CREATE']").click()
# 새로 열린 한/글 편집창으로 옮기기
driver.switch_to.window(driver.window_handles[-1])
# 텍스트 입력하기
driver.find_element(By.CSS_SELECTOR, "body").send_keys("안녕하세요?")
driver.find_element(By.CSS_SELECTOR, "body").send_keys("\n반갑습니다!!")
# 다운로드하기
driver.find_element(By.CSS_SELECTOR, "div.property_title").click()
driver.find_element(By.CSS_SELECTOR, "div.d_download.btn_icon_inner").click()
# 크롬창 닫기
driver.quit()
기본적으로 셀레늄 모듈에 대한 이해가 필요한 코딩이지만,
어려운 파이썬 문법은 전혀 들어가 있지 않으므로
금방 이해하실 수 있을 거라고 생각됩니다.
다만, 위의 코드는 약간의 보완이 필요한 상태입니다.
브라우저에서 데이터를 로딩하는 시간 등을 전혀 고려하지 않았기 때문입니다.
한 줄씩 천천히 실행해보시면 문제가 없지만,
코드 전체를 한 번에 실행하실 때에는 문제 발생의 소지가 있습니다.
적절한 길이의 time.sleep 함수나 셀레늄의 wait 메서드를 통해 보완해야 한다는 뜻입니다.
이 부분은 이 포스팅의 범위에서 벗어나므로, 기회가 되면 다른 포스팅에서 다루겠습니다.
최종 시연화면은 아래와 같습니다.
굳이 의의를 두자면, 브라우저를 통해
한/글이 설치되어 있지 않은 PC나, 맥, 리눅스 등에서도
무료로 동일한 서식의 문서를 생산할 수 있다는 정도가 되겠습니다.
...제가 앞으로 쓸 일은 없을 것 같네요.
이번 포스팅은 여기서 마치겠습니다.
의견이나 질문은 댓글로 남겨주시기 바랍니다.
그럼 행복한 하루 되세요!!
'아래아한글 자동화 > python+hwp 중급' 카테고리의 다른 글
한컴스페이스 웹에디터로 표 만들기 자동화(selenium) (0) | 2022.01.28 |
---|---|
[추천] 파이썬 런타임에서도 엄청나게 빠른 누름틀 값 입력방법 (0) | 2022.01.27 |
[QnA] 이미지 수백개를 삽입할 때 파이썬 for문으로 넣으면 너무 느려요! (0) | 2022.01.24 |
댓글