NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 팁 앤 테크
  • 매뉴얼

    팁과 테크니컬 노하우를 확인하세요.

    팁 앤 테크

    팁과 테크니컬 노하우를 확인하세요.

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    에디터 게시판에 새글이 올라오면 알람 또는 알림을 발생시키고, pdf로 저장하는 매크로 만들기.

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 요즘 들어서 웹사이트의 특정 게시판의 새글 알림과 새글이 등록되면 이미지나 PDF로 저장하는 매크로에 대한 문의가 많습니다. 제작하기가 어려운건 아니지만, 웹 API의 액션들을 사용하기엔 초보자분들에게 어려움이 있을겁니다. 웹 API의 액션들을 어떻게 사용해야 하는지는 예제와 도움말을 보면 어느정도 감(感)은 잡을수는 있겠지만, 익숙하게 사용하긴 어렵죠^^; 오늘은 사용자가 입력한 사이트의 게시판에서 새글이 올라오면 알람을 발생시키고, 해당 페이지의 글을 pdf로 저장하는 매크로를 만들어 볼께요. 엔지엠 에디터를 실행하고, 새로운 스크립트를 추가하세요.

    cnOuw3h.gif

     

     

    아래 그림과 같이 우측 하단의 외부 API 탭을 선택하고, 웹 API의 카테고리 안에 [ 연결 ]을 스크립트에 추가하세요.

    xrEdCor.png

     

     

    웹사이트 주소에 엔지엠소프트웨어의 게시판 주소인 "http://ngmsoftware.com/bbs/board.php?bo_table=tip_and_tech"를 넣어줍니다.

    l80rDNb.png

     

     

    깜밖하고 이 매크로를 만들기 위한 시나리오를 설명하지 않았네요. 새글이 올라왔는지 체크하는 방법은 여러가지가 있겠지만, 해당 웹사이트에서 어떤 정보를 주는게 아니라면 이 방법이 가장 좋다고 할 수 있습니다. 주기적으로 게시판을 크롤링하는거죠. 아래 그림을 보면, 게시글에는 글 번호가 있습니다. 글 번호가 가장 큰게 가장 최신 글입니다. 그러니, 가장 큰 게시글 번호를 저장해놓고, 이 보다 큰 게시글 번호가 있는지 체크해야 합니다.

    6Vmf3x0.png

     

     

    주기적으로 게시판의 글 번호를 체크하려면 [ For 반복 ]이나 [ 액션 이동 ]을 사용하면 됩니다. 이건 아래에서 다시 알아보기로 하고요. 글 번호를 모두 가져와봅시다. 글 번호가 어떤 엘리먼트(Element, 요소)인지 알아내야 하는데요. 크롬 브라우저의 개발자 도구(F12)를 실행하세요. 아래 그림처럼 Element Selector(엘리먼트 셀렉터)를 클릭하세요.

    QUh2svh.png

     

     

    글 번호로 마우스를 이동한 후 클릭 해보세요. 그러면, 해당 엘리먼트가 선택됩니다.

    s3OgCAh.png

     

     

    여러분들이 HTML 구조를 잘 알고 있다면, 아래 행위가 어떤건지 이해할 수 있을겁니다. 하지만, 약간 어려울 수 있는데요. 아래 그림과 같이 현재 선택된 엘리먼트가 누구인지를 알려줍니다. 일반적으로 게시판은 "table" 태그(tag)를 사용합니다. 테이블은 행(tr)과 열(td)로 이루어져 있습니다. 당연히 하나의 게시글은 하나의 행이고, 줄 번호, 제목, 작성자와 같은 정보들은 열이 됩니다. 

    t9QIcm5.png

     

     

    각각의 행에는 전부 글 번호 td가 존재합니다. 이들의 공통점은 class가 "td_num2"라는겁니다. 이건 사이트마다 다르니 약간 분석이 필요하긴 합니다^^; 그래서, 이 부분을 이해시키기 위해 장황하게 설명하고 있는거고요^^;

    nioU0xh.png

     

     

    아래는 디시인사이드던전 앤 파이터 갤러리입니다. 구조는 비슷하죠^^

    4jDmvmH.png

     

     

    만약, 글 번호가 없다면 작성일의 시간을 체크해야 할수도 있습니다. 대부분 글 번호를 가지고 있지만, 간혹 없는 경우도 있습니다. 작성일은 있을테니 최신글을 가져오는 로직을 만드는데 크게 문제는 없을거예요. 최신 글을 체크할 수 있는 방법이 없다면 좀 더 고차원적인 로직을 적용해야 합니다. 이제, 글 번호를 모두 가져올 수 있도록 해볼께요. [ 엘리먼트 목록 ] 액션을 스크립트에 추가하세요.

    1157yhd.png

     

     

    요소 이름(Element Name)은 위에서 알아낸 글 번호 td의 class 이름입니다. 요소 형식은 클래스 이름(ClassName)으로 선택하세요.

    gO5iO3T.png

     

     

    스크립트를 실행하고, 엘리먼트 값 목록을 클릭해보세요. 아래 그림과 같이 글 번호에 있는 모든 내용을 가져옵니다. 숫자가 아닌것도 있긴하지만요.

    nu1YYSt.png

     

     

    아래쪽의 요소 인덱스를 2로 입력하고 실행하면, 상단의 값이 3번째 위치의 값을 가져온것을 알 수 있습니다.

    ※ 인덱스는 0부터 시작하고, 0번 인덱스는 첫번째 요소를 가리킵니다. 그래서, 공지 하나를 제외하고 가장 큰 글 번호를 가져오려면 인덱스는 1이되어야 합니다.

    bz8iJQ9.png

     

     

    위와 같이 인덱스로 처리하면 문제가 될 수 있어요. 공지나 기타 새글이 아닌 경우도 있을 수 있거든요. 예를 들어서 공지가 하나 더 추가된다면 인덱스는 이전 글을 가리키고, 원하는 결과를 얻을 수 없을겁니다. 그래서, 아래와 같이 [ 변수 ]와 [ 배열 정렬 ]을 사용해서 숫자만 추출한 후 역순으로 정렬해야 합니다. 참고로, 배열 정렬에서 배열 형식을 Number로 선택하면 숫자가 아닌 항목들은 자동으로 삭제됩니다.

    ZMytz4s.png

     

     

    [ 배열 값 ] 액션을 추가한 후 배열에서 첫번째 항목을 가져오면, 공지나 기타 텍스트를 제외한 마지막 글 번호를 가져올 수 있습니다.

    PH0lSTX.png

     

     

    마지막 글 번호를 알아냈으니 변수에 이 값을 저장하고, 변화가 있는지 체크해야 합니다. [ 숫자 체크 ] 액션을 사용하면 현재 최신글과 비교할 수 있습니다. 이렇게 숫자가 바뀌는지 조건으로 확인하고, 현재 숫자가 기존 변수에 저장했던 숫자보다 크면 핸재 숫자를 갱신하고, 해당 URL을 PDF로 저장하게 해야 합니다. URL로 웹사이트의 내용을 PDF로 저장하려면 아래 무료 유틸리티를 사요하면 됩니다.

    [ 웹페이지를 PDF로 저장하는 방법 ]

    ayoCKtx.png

     

     

    웹페이지 주소를 입력하고, PDF 저장 버튼을 누르면, 웹페이지를 PDF 파일로 저장할 수 있습니다. 여기서부터는 [ 텍스트 쓰기 ] 액션과, [ 마우스 클릭 ] 액션으로 자동화 할 수 있습니다. 사실, 웹사이트에서 새로 올라오는 글 번호를 확인하는 부분이 어려운거지 단순 클릭이나 키보드 입력은 간단하기 때문에 별도로 설명하지는 않겠습니다. 그리고, 글 제목과 같이 주기적으로 크롤링하면서 글 번호를 갱신하려면 아래 그림과 같이 [ 액션 이동 ]으로 계속 돌리면 됩니다.

    lEybPTI.png

     

     

    디테일한 부분들은 좀 더 추가해야하지만, 간단한 예제이기 때문에 여기까지만 알아볼께요. 나머지는 이 글을 참고하셔서 직접 수정 해보시기 바랍니다. 그리고, 언급하지는 않았는데요. 알람 또는 알림을 발생시키는 방법은 여러가지가 있습니다. [ 화면 알람 ], [ 소리 알람 ] 또는 [ 카카오톡 ]이나 [ 텔레그램 ] 및 [ 디스코드 ]로 메세지를 보낼수도 있습니다. 각각의 기능들은 도움말이 있으니 링크를 클릭해서 만들어 보세요^^

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

     

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.