본문 바로가기

자동화77

0강: 응용프로그램창 백그라운드로 숨기기 """ 안녕하세요? 파이썬으로 엑셀이나 아래한글 등 응용프로그램 자동화를 해보시면, 백그라운드로 숨기고 싶거나, 화면에 나타나게 하고 싶은 경우가 있죠. 셀레늄 크롤링할 때 크롬의 headless옵션처럼요. MS제품군, 엑셀 같은 경우는 excel.Visible 변수(bool)를 False로 정의해서 프로그램화면을 백그라운드로 숨기거나 True로 정의해서 나타나게 할 수 있는데, 아래한글 등 관련 메서드가 따로 없는 프로그램의 경우에는 동영상처럼 해주시면 됩니다. 동영상을 요약하면 win32gui.FindWindow(args)로 응용프로그램의 핸들값(int)을 찾고, win32gui.ShowWindow(args)로 창을 숨기거나 나타나게 합니다. 백그라운드 작업 종료시에는 try-finally 구문 등으.. 2020. 4. 3.
아래아한글 유저 99%는 모르는 기능들 1. 숨겨진 노트 2. 페이지복사(여백서식과 배경이미지까지 한번에) 3. 정규식 찾아바꾸기 4. 메일머지? 메일머지는 몰라도 위 세 개 정도는 왠만한 고인물이 아니면 99퍼센트도 모를 것 같다. 메뉴에 없으니까... 당연히 스크립트매크로와 파이썬 기본문법 정도만 알면 못할 게 없지만, 그렇지 않은 유저를 위한 강의도 회사원코딩에 올려보자. 회사원코딩이 추천하는 오늘자 파이썬 입문교재 3종 1. 모두의 파이썬 X 알고리즘(합본호):누구나 쉽게 배우는 프로그래밍 기초 모두의 파이썬 X 알고리즘(합본호):누구나 쉽게 배우는 프로그래밍 기초 COUPANG www.coupang.com 파이썬으로 프로그래밍에 처음 입문하기엔 아주 재미있고 쉽게 배울 수 있음. 다른언어 사용자가 파이썬을 배우는 교재로는 비추천. 다.. 2020. 4. 3.
파이썬으로 꼭 해보고 싶은 동영상 자동 컷편집 제가 아는 동영상 편집 프로그램 중 파이썬 API를 제공하는 건 다빈치리졸브가 유일합니다. 아쉬운 점은 API매뉴얼이 따로 없어 온갖 레퍼런스나 해외 블로그 탐험을 해야 한다는 것이고, 그나마 다행인 점은 대표적인 튜토리얼 코드가 세 개쯤 있어서(사이트 세 개가 아니라.. 콘텐츠 세 개ㄷㄷㄷ) 구조나, 기본 메서드 스타일은 수월하게 감을 잡을 수가 있다는 것입니다. 거기다 win32 객체와는 달리 파이참에서 메서드 참조를 잘 잡아주니 메서드나 프로퍼티 목록은 갖고 있는 거나 마찬가지죠. 간단하게 만들어서 써먹어보고 싶은 건 일종의 컷편집. 특정 시간 이상 동안 음량이 일정수준 이하인 구간을 잘라내는 코드를 튜토리얼로 먼저 제작해 보고 싶네요ㅎㅎ (...이미 VREW에서 제공하는 기능임??) 이것도 일종의.. 2020. 4. 2.
hwp의 API는 왜 이렇게 복잡할까? 오늘 어떤 구독자 분의 질문메일에 "한/글 문서를 PNG포맷으로 저장할 수 있나요?"라는 질문이 있었다. 이건 사실 간단한 질문인데, hwp에서 제공하는 API 중에 이미지로 저장하는 CreatePageImage라는 메서드가 있기 때문이다. 물론 사용법도 간단하다. 근데 조금만 살펴보면 문제가 있다. 우선, 위의 메서드는 GIF와 BMP포맷만을 제공한다. PNG포맷으로 출력하려면 PrintToImage라는 메서드를 사용해야 하는데 이런 종류의 메서드는 파라미터를 파이썬문법처럼 괄호 안에 넣는 게 아니라 GetDefault로 메서드를 초기화(?)하고 모든 파라미터를 HParameterSet을 통해 별도 입력 후 Execute 메서드로 실행해야 한다. (사실 모든 메서드는 이런 구조다. 단축키 개념의 간편한.. 2020. 4. 1.
selenium으로 크롤링할 때 frame과 object 태그 차이 html 안에 html을 삽입해놓은 웹사이트가 많이 있다. 한 개의 html 안에 수천 수만줄의 태그와 js를 유지관리하기도 힘드니, 어찌 보면 개발자 입장에서 당연할 수 있다. 이 때 삽입하는 방법은 주로 iframe태그를 넣거나, object 태그를 넣는 방법 중 하나로 하는데 각각을 크롤링하는 방법에 작은 차이가 있다. 우선 iframe이 삽입되어 있는 경우는(주로 동영상 플레이어나, 메뉴바, 사이드바와 본문내용이 구분되는 경우에 사용) driver.find_element_~가 아니라 driver.switch_to.frame(프레임name이나 id)로 접근하고, 상위프레임으로 이동해야 할 때 다시 driver.switch_to.parent_frame 이나 driver.switch_to.default.. 2020. 3. 31.