본문 바로가기
[최대48만원] 인터넷•TV 가입시 설치당일 현금지급 정수기 렌탈시 최대50만원 추가지급
이미지 매크로

인터넷 예약 메크로

by 업무자동화 2023. 6. 4.
반응형

무료 매크로 프로그램 다운로드

http://ngmsoftware.com/bbs/board.php?bo_table=product1&wr_id=32 

 

엔지엠소프트웨어

엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.

www.ngmsoftware.com

#매크로 #매크로프로그램 #메크로 #g매크로 #마우스매크로 #키보드매크로 #엑셀매크로 #키매크로 #수강신청매크로 #로지텍마우스매크로 #매크로키보드 #파이썬매크로 #매크로뜻 #매크로마우스 #로지텍매크로 #ld플레이어매크로 #오토마우스매크로 #키보드마우스매크로 #오토핫키매크로 #이미지매크로 #이미지인식매크로 #하드웨어매크로 #화면인식매크로 #선착순매크로 #이미지서치매크로 #한글매크로 #심플핫키 #simplehotkey #지존매크로 #짜맥 #챗굴

 

  • 엔지엠 무료: 무료 (전체 기능의 50프로)
  • 엔지엠 커뮤니티 월 이용료: 4,500원, 1년 이용료: 55,000원 (전체 기능의 80프로)
  • 엔지엠 얼티밋 월 이용료: 6,500원, 1년 이용료: 77,000원 (전체 기능의 90프로)
  • 엔지엠 엔터프라이즈 월 이용료: 9,200원, 1년 이용료: 110,000원 (전체 기능 사용)

 

안녕하세요. 엔지엠소프트웨어입니다. 이 예제는 캠핑장 예약하는건 아니구요. 단순히 특정 날짜에 빈자리가 있는지 알림을 주는 매크로 예제입니다. 크게 복잡하거나 어렵지는 않지만~ 일반적인 윈도우 매크로와 웹 API는 사용법이 많이 달라서 관련 내용들을 익혀두시면 웹 관련 업무에 유용하게 사용하실 수 있을거예요^^

 

예전에 지나가면서 본 금은모래 캠핑장을 예로 들어볼께요. 이외에도 백패커들이 많이 찾는 노을캠핑장이나 호명산 잣나무숲 캠핑장등등... 조금만 응용하면 다른 캠핑장들도 알림을 받아볼 수 있을겁니다. 저는 텐트나 캠핑 장비가 없기 때문에 숙박을하진 않고 주로, 저녁때까지만 놀다가 귀가하는 편입니다. 여유가 되면 주변 모텔을 검색해서 하루 자고 가기도 합니다. 아무튼, 금은모래 캠핑장 예약 사이트는 아래와 같이 생겼습니다.

 

 

예약 사이트를 보면 아시겠지만, 회색으로 된 구역은 예약이 불가능합니다. 주말에는 100프로 예약이 되어 있네요. 주로 주말에만 캠핑을 다시는 분들이라면... 누군가가 취소하거나 빈자리가 나올 때 알림을 받으면 좋을겁니다. HTML 구조를 보면 날짜별로 DIV안에 DL 목록으로 구역 정보가 있다는걸 확인할 수 있습니다. 여기서 DL 태그의 클래스를 보면 soldout이라는 정보가 있는데요. 이걸 이용하면 캠핑 예약 날짜에 빈자리가 있는지 확인할 수 있을겁니다.

 

 

엔지엠 에디터를 실행하고, 새로운 스크립트를 하나 추가 해줍니다.

 

 

[ 웹 API의 연결 ] 액션을 추가한 후 웹 드라이버를 선택하고, 사이트 주소를 입력하세요.

 

 

스크립트의 가장 위에 있는 변수는 캠핑 예약 날짜별 항목을 저장합니다. 예를 들어서 2022년 10월 26일날 예약 가능한 사이트가 있는지 확인하기 위해 변수가 필요합니다.

 

 

예약을 확인하기 위해 XPath에 2022년 10월 26일 정보를 입력 해줍니다. XPath는 크롬의 개발자 도구(F12)에서 날짜를 선택하면 확인할 수 있습니다.

 

 

찾아온 엘리먼트 정보를 변수에 저장하고, 마지막 엘리먼트에서 대여존이 아닌게 있는지 체크할 수 있습니다.

 

 

구조를 분석해보니 td 값만 가져오면 될거 같습니다. 이 값이 0이 아니면 예약 가능한 사이트가 있다는 뜻이거든요. 예약이 가능한 날과 예약이 불가능한 날의 값들을 비교 해보세요. 예약이 불가능한 사이트는 0이고, 나머지는 사이트 위치에 따라 값이 0보다 큽니다. 아마 사이트 고유 번호인듯한데... 이걸 이용하는게 더 편리할거 같군요^^;

 

 

아래 그림과 같이 td 정보만 가져와서 배열로 만들었습니다.

 

 

이 배열을 순차적으로 돌면서 0보다 큰 값이 있는지 판단하면 될거 같습니다. 그러면, 해당 날짜에 예약이 가능한지 쉽게 알 수 있겠죠? 참고로, 사용자로부터 날짜 정보를 받아서 동적으로 처리하려면 아래와 같이 [ 입력 메세지 박스 ]를 사용할 수 있습니다.

 

 

[ 날짜 시간 메세지 박스 ]를 사용하면 더 쉽게 처리할 수 있습니다.

 

 

물론, For 반복이나 Foreach 반복 액션을 사용해서 1일부터 30일까지 순차적으로 체크할수도 있습니다. 원하는 방식으로 처리할 수 있도록 액션들이 준비되어 있으니까요. 마지막으로 텔레그램이나 카카오톡으로 0보다 큰 값이 있으면 알림을 보낼 수 있습니다.  이와 관련된 예제들도 팁 앤 테크 게시판에 있으니 참고해 보시면 좋을거 같아요. 업무 자동화 RPA 매크로를 제작하는데 어려움이 있으시면 [ 고객 서비스 ]방에 문의 해주세요^^

 

캠핑장 예약 매크로를 어떻게 만드는지 알아보도록 하겠습니다. 사실, 캠핑장뿐만 아니라 골프 부킹이나 선착순과 같은 곳에도 사용할 수 있습니다. 다양하게 응용할 수 있는데요. 문제는~ 사이트에 피해를주거나 문제가 될만한 곳에는 사용하시면 안된다는 겁니다. 자동화 매크로를 사용하는 경우 불이익을 받을 수 있기 때문입니다. 서비스 회사의 약관을 잘 읽어보시는게 좋겠죠?

 

골프 부킹이나 캠핑장 예약하는 방법을 학습하기 위해 엔지엠 에디터를 실행하고, 새로운 스크립트를 하나 추가하세요. 참고로, 회사 내부 사이트에서 데이타를 크롤링하거나 검증하는 용도로도 많이 사용하고 있습니다. 웹 API 관련한 내용들을 잘 활용한다면 말이죠^^

 

 

캠핑 예약 사이트 주소는 아래와 같습니다.

[ 금수문화공원 야영장 예약 안내 ]

 

사이트 주소를 보면, 연도와 월이 포함되어 있는걸 확인할 수 있습니다. initYear와 initMonth입니다. 오늘 날짜가 2022년 10월 11일인데요. 1개월씩 달력을 보여주기 때문에 년도와 월까지만 GET 방식으로 넘겨주면 됩니다.

https://www.sj.go.kr/gumsu/page.do?mnu_uid=1850&csr_class=0&step=list&cs_uid=0&initYear=2022&initMonth=10#self

 

 

주소에서 다이나믹하게 년도와 월을 입력하도록 할거예요. 그래서, 년월을 저장할 수 있는 변수 2개를 추가 했습니다. 아래 그림을 참고하셔서 변수 아이디(year, month)를 설정하세요. 그리고, 변수 2개 모두 덮어 쓰기 속성을 True로 변경해주세요.

 

 

사용자로부터 년도와 월을 입력 받을겁니다. 이럴 때 사용할 수 있는 액션이 [ 입력 메세지 박스 ]입니다. 값 기본값 속성을 보시면 {N_YYYY}와 같이 되어 있습니다. 월 액션의 기본값은 {N_MM}으로 되어 있구요. 중괄호안에 N_ 로 시작하는 변수는 내장 변수라고 부릅니다. 내장 변수의 자세한 내용은 [ 여기 ]에서 확인할 수 있습니다.

 

 

잘 동작하는지 스크립트를 한번 실행 해볼까요? 아래 동영상처럼 사용자로부터 캠핑장 또는 골프 부킹 예약 년도와 월을 입력 받습니다. 사실 디테일하게 하려면~ 일자까지 추가하시면 좋겠죠? 우선은 간단한 테스트라서 년월만 처리하는걸로 하겠습니다.

https://youtu.be/lqK6WgltZwk

 

 

사용자로부터 입력받은 년월 값을 변수에 저장해야 합니다. 변수에 값을 추가하는 방법은 아래 동영상을 참고하세요.

https://youtu.be/IvVHD6gby14

 

 

사이트에 접속하는 방법은 [ 웹 API의 연결 ] 액션을 사용하면 됩니다. 연결 액션의 속성은 아래와 같습니다. 주소를 보면 Year와 Month가 변수 이름으로 대체되어 있는걸 확인할 수 있을겁니다. 변수를 사용할 때 변수 가져오기와 변수 추가하기로 해도 되지만, 변수를 가져올 때는 중괄호안에 변수명을 넣어서 직접 가져올 수 있습니다.

https://www.sj.go.kr/gumsu/page.do?mnu_uid=1850&csr_class=0&step=list&cs_uid=0&initYear={year}&initMonth={month}#self

 

 

아래 동영상은 기본값으로 매크로 스크립트를 실행 해본겁니다. 여러분들은 년도와 월을 바꿔가면서 실행 해보세요. 그러면, 사이트에서 예약 년도와 월이 변경되는걸 확인할 수 있을겁니다.

 

 

 

캠핑장 예약 날짜를 선택했으면 예약이 가능한지 확인해야 합니다. 그래야 예약하기 버튼을 클릭 후 예약을 계속 진행할 수 있기 때문입니다. 현재 날짜에 예약 가능한 사이트가 있는지 확인하는건 아래 그림과 같이 목록으로 표시 해줍니다. 여러가지 추가 정보도 더 있네요.

 

 

예약하기 [ 버튼 ]을 직접 클릭해도 됩니다만, 실제 클릭이 어떻게 이루어지는지 확인하는 방법과 목록을 가져오는 방법에 대해 알아볼께요. [ 웹 크롤러 ] 액션을 추가하고 아래와 같이 설정하세요. 아래 그림을 봐도 속성에 왜 이렇게 설정해야 하는지 잘 이해가 안갈수도 있습니다. 웹에 대한 지식이 어느정도 있어야 하는 부분이거든요^^;

 

 

우선, 예약 사이트에서 F12를 눌러서 구조를 살펴봅시다. 개발자 도구에서 엘리먼트 선택 도구 예약하기 버튼을 선택 해보세요.

 

 

우측에 소스를 잠깐 살펴볼까요? a 태그로 되어 있고, 여러가지 어트리뷰트(Attribute: 특성, Property: 속성)를 가지고 있습니다. class는 별도로 ClassName으로 값을 추출할 수 있습니다. 아무튼, 여기서 중요한 부분은 href에 서버로 예약 요청하는 내용이 없다는 것입니다. 그래서, 우리가 가져와야 할 특성은 onclick입니다. 여기에 보면 JavaScript(자바스크립트) 함수명과 사이트 번호가 들어 있습니다. 이 값을 사용해야 합니다.

<a title="예약하기" class="bt_booking_doing" href="#self" onclick="goReserve(278)">예약하기</a>

 

엔지엠 매크로 스크립트를 실행하고, 데이타를 잘 가져왔는지 살펴봅시다. 엘리먼트 컬렉션을 클릭하면 가져온 모든 엘리먼트를 확인할 수 있습니다. 여기서 각각의 엘리먼트를 클릭해보면 값을 확인할 수 있는데요. 이 값이 서버로 예약을 요청하는 자바스크립트 함수입니다. 파라메터도 확인할 수 있죠?

 

 

여기서, 이 값들을 모두 엑셀에 정리 해볼까요? 크롤링한 값들을 저장할 변수(예약 목록)을 하나 더 추가 했습니다.

 

 

웹 크롤러의 변수 추가하기 예약 목록 변수 엘리먼트 목록을 추가시켜줍니다.

 

 

마지막에 [ 텍스트 쓰기 ] 액션을 하나 추가하세요. 바탕화면에 "예약 목록.csv"로 저장하게 했습니다. 이 설정은 텍스트 파일 선택 속성을 클릭하여 저장 위치와 파일명을 입력하세요. 아래 그림에서 속성 하나를 설정하지 않았는데요. 파일로 저장하려면 저장 속성을 True로 설정해줘야 합니다^^;

 

 

텍스트 파일에 엘리먼트 목록을 써야 하기 때문에 변수에 저장되어 있는 값을 변수 가져오기 텍스트 쓰기 속성에 넣어주세요.

 

 

스크립트를 실행하면 바탕화면에 csv 파일이 하나 생성되었을겁니다.

 

 

파일을 열어보면 아래 그림과 같이 예약 버튼의 자바스크립트 함수와 파라메터 값이 들어있는걸 확인할 수 있습니다.

 

 

자바스크립트를 실행만하면 되는데요. 아래 그림처럼 자바스크립트 실행 액션을 마지막에 추가하고, 속성을 설정하세요.

 

 

가장 좋은 방법은 텍스트 파일 또는 엑셀 파일에서 한줄씩 읽어서 자바스크립트를 실행하는겁니다. 하지만~ 이 예제에서는 간단한 테스트라서 복잡하게 로직을 추가하거나 예외 상황에 대한 대처는 처리하지 않았습니다. 이런 부분들은 작업하시면서 직접 처리하는게 좋습니다. 아무래도 속도와 효율이 중요한 작업이기 때문에 최적화에 많은 시간을 들여야 할겁니다. 뭐~ 이정도만 되더라도 누구보다 빠르게 예약하거나 부킹을 잡을 수 있을겁니다^^

 

[ 각종 자동화 매크로 및 RPA 프로그램 제작 해드립니다. ]

[ 초보자도 쉽게 따라할 수 있는 기초 학습 강좌 보기 ]

 

원본 글 보기

http://ngmsoftware.com/bbs/board.php?bo_table=tip_and_tech 

 

엔지엠소프트웨어

엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.

www.ngmsoftware.com

#비활성매크로 #g102매크로 #철권매크로 #레이저마우스매크로 #ghub매크로 #녹화매크로 #키보드반복매크로 #로지텍마우스광클매크로 #플라스크매크로 #윈도우매크로 #비활성g매크로 #오토매크로 #자동사냥 #주식매크로 #오토핫키키보드 #오토핫키마우스 #오토핫키이미지 #지존오토 #기계식매크로 #하드웨어매크로 #무한반복매크로 #대량이메일발송매크로 #엑셀VBA매크로 #주식모니터링매크로 #이미지맥스 #심플핫키 #오토클리커 #UiPath #Brity #스푸퍼 #DKOM #모바일게임매크로 #다클라매크로 #다계정매크로 #인스타그램매크로 #짜맥매크로 #챗굴매크로

반응형

댓글