KR102436357B1 - Web scraping method and system using method of making web scraping script - Google Patents

Web scraping method and system using method of making web scraping script Download PDF

Info

Publication number
KR102436357B1
KR102436357B1 KR1020210153095A KR20210153095A KR102436357B1 KR 102436357 B1 KR102436357 B1 KR 102436357B1 KR 1020210153095 A KR1020210153095 A KR 1020210153095A KR 20210153095 A KR20210153095 A KR 20210153095A KR 102436357 B1 KR102436357 B1 KR 102436357B1
Authority
KR
South Korea
Prior art keywords
web
script
job
scraping
web scraping
Prior art date
Application number
KR1020210153095A
Other languages
Korean (ko)
Inventor
이정신
김청빈
임동현
송창환
Original Assignee
주식회사 비즈니스 링커 시스템
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 비즈니스 링커 시스템 filed Critical 주식회사 비즈니스 링커 시스템
Priority to KR1020210153095A priority Critical patent/KR102436357B1/en
Application granted granted Critical
Publication of KR102436357B1 publication Critical patent/KR102436357B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

Abstract

The present invention relates to a web scraping method using a web scraping system, wherein according to one embodiment, disclosed is the web scraping method comprising: a step of generating a job script comprising a command enabling one or more web scrapers connected through a communication network to scrape a digital content of a target site; a step of generating a target site subject to web scraping and a job schedule specifying an execution schedule of web scraping; a step of generating a job to be transmitted to each web scraper according to the job schedule; and a step of transmitting the job to each web scraper based on a job status of each web scraper. Therefore, the present invention is capable of more conveniently and efficiently perform an execution and script management of a web scraping job.

Description

웹 스크래핑용 스크립트 작성 방법 및 이를 이용한 웹 스크래핑 방법 및 시스템 {Web scraping method and system using method of making web scraping script} {Web scraping method and system using method of making web scraping script}

본 발명은 웹 스크래핑 방법 및 시스템에 관한 것으로, 보다 상세하게는, 웹 스크래핑 작업을 위한 스크립트를 생성하는 방법 및 이렇게 생성된 스크립트를 이용하여 웹 스크래핑을 수행하도록 하는 웹 스크래핑 시스템에 관한 것이다. The present invention relates to a web scraping method and system, and more particularly, to a method for generating a script for a web scraping operation, and a web scraping system for performing web scraping using the generated script.

일반적으로 선사는 자신이 소유한 선박(예컨대 컨테이너선) 스케줄을 게시하고 예매할 수 있는 사이트를 운영한다. 우리나라에는 많은 선사가 있고 각 선사마다 자신이 보유한 다수의 선박에 대한 스케줄을 제공하는 사이트를 각기 별도로 운영하기 때문에, 화물 운송을 위해 선박을 이용하고자 하는 사용자 입장에서 다수의 선사의 수많은 선박 중 어느 것이 가장 적절한지 검색하기 위해 개별 선사 사이트마다 방문하여 알아보는 것이 매우 불편하다. In general, shipping companies operate a site where they can post schedules for ships they own (eg, container ships) and make reservations. There are many shipping companies in Korea, and each shipping company separately operates a site that provides schedules for multiple ships it owns. It is very inconvenient to visit each shipping site to find the most appropriate one.

한편 이와 같이 정보가 여러 사이트에 각기 흩어져 있는 경우의 불편을 해소하기 위해 웹 페이지에서 특정 데이터를 수집하는 웹 스크래핑(scraping) 기술이 사용되기도 한다. 그런데 웹 스크래핑 작업을 위해서는 스크래핑 하고자 하는 대상(타겟 사이트)마다 각각 프로그래밍 언어에 능통한 전문가(개발자)가 각 타겟 사이트에 맞는 전용의 스크립트를 작성해야 했다. 그러나 타겟 사이트마다 스크립트를 작성하는 것은 일반 사용자에게 매우 힘들고 어려운 작업이고 시간이 많이 소요되는 문제가 있다. Meanwhile, a web scraping technology that collects specific data from a web page is sometimes used in order to solve the inconvenience of such information being scattered on several sites. However, for web scraping work, for each target (target site) to be scraped, an expert (developer) who is proficient in each programming language had to write a script suitable for each target site. However, writing a script for each target site is very difficult, difficult, and time-consuming for general users.

특허문헌1: 한국 등록특허 제10-1982085호 (2019년 5월 27일 공고)Patent Document 1: Korean Patent Registration No. 10-1982085 (Announced on May 27, 2019) 특허문헌2: 한국 공개특허 제10-2021-0117039호 (2021년 9월 28일 공개)Patent Document 2: Korean Patent Publication No. 10-2021-0117039 (published on September 28, 2021)

본 발명은 상기 문제점을 해결하기 위한 것으로, 다수의 타겟 사이트에 흩어져 있는 정보를 스크래핑하여 하나의 통합된 웹서버에서 제공할 수 있도록 하는 웹 스크래핑 방법 및 시스템을 제공하는 것을 목적으로 한다. An object of the present invention is to provide a web scraping method and system for scraping information scattered on a plurality of target sites and providing it in one integrated web server.

또한 본 발명은 전문 개발자가 아니더라도 웹 스크래핑에 사용되는 스크립트를 쉽고 편리하게 작성할 수 있도록 하는 스크립트 생성 모듈을 제공하는 것을 목적으로 한다. Another object of the present invention is to provide a script generation module that enables non-professional developers to easily and conveniently write scripts used for web scraping.

본 발명의 일 실시예에 따르면, 웹 스크래핑 시스템을 이용한 웹 스크래핑 방법으로서, 통신망을 통해 연결된 하나 이상의 웹 스크래퍼가 타겟 사이트의 디지털 콘텐츠를 스크래핑하도록 하는 명령어를 포함하는 작업 스크립트를 생성하는 단계; 웹 스크래핑의 대상이 되는 타겟 사이트 및 웹 스크래핑의 실행 일정을 지정하는 작업 스케줄을 생성하는 단계; 상기 작업 스케줄에 따라 각 웹 스크래퍼에 전달할 작업(job)을 생성하는 단계; 및 각 웹 스크래퍼의 작업 상태에 기초하여 각 웹 스크래퍼에게 상기 작업(job)을 전달하는 단계;를 포함하는 웹 스크래핑 방법을 개시한다. According to an embodiment of the present invention, there is provided a web scraping method using a web scraping system, the method comprising: generating a work script including a command for scraping digital content of a target site by one or more web scrapers connected through a communication network; generating a job schedule specifying a target site to be subjected to web scraping and an execution schedule of web scraping; generating a job to be delivered to each web scraper according to the job schedule; and transmitting the job to each web scraper based on the job status of each web scraper.

본 발명의 일 실시예에 따르면, 상기 웹 스크래핑 방법을 실행시키기 위한 컴퓨터 프로그램이 기록된 컴퓨터 판독가능 기록매체를 개시한다.According to an embodiment of the present invention, there is disclosed a computer-readable recording medium in which a computer program for executing the web scraping method is recorded.

본 발명의 일 실시예에 따르면 전문 개발자가 아니더라도 웹 스크래핑에 사용되는 스크립트를 쉽고 편리하게 작성하고 수정 및 변경할 수 있도록 함으로써 웹 스크래핑 작업의 실행 및 스크립트 관리를 보다 편리하고 효율적으로 수행할 수 있다. According to an embodiment of the present invention, even a non-professional developer can easily and conveniently write, modify, and change a script used for web scraping, so that the execution and script management of the web scraping operation can be performed more conveniently and efficiently.

도1은 본 발명의 일 실시예에 따른 웹 스크래핑 시스템을 포함하는 네트워크 구성을 설명하는 도면,
도2는 일 실시예에 따른 웹 스크래핑 시스템을 설명하는 도면,
도3은 일 실시예에 따라 관리노드와 작업노드간 동작 관계를 설명하는 도면,
도4는 일 실시예에 따른 스크립트 생성 프로그램의 사용자 인터페이스를 설명하는 도면,
도5는 일 실시예에 따른 스크립트 생성 프로그램을 사용하여 스크립트는 생성하는 동작을 설명하는 도면,
도6은 예시적인 타겟 사이트를 디스플레이 하는 웹 브라우저 화면을 나타내는 도면,
도7은 스크립트 생성 프로그램에서 예시적인 동작 리스트를 설명하는 도면,
도8은 일 실시예에 따른 작업 스케줄 생성 프로그램의 사용자 인터페이스를 설명하는 도면,
도9는 일 실시예에 따른 작업 스케줄 생성 프로그램의 동작을 설명하는 도면이다.
1 is a diagram illustrating a network configuration including a web scraping system according to an embodiment of the present invention;
2 is a diagram illustrating a web scraping system according to an embodiment;
3 is a diagram illustrating an operational relationship between a management node and a work node according to an embodiment;
4 is a view for explaining a user interface of a script generating program according to an embodiment;
5 is a view for explaining an operation of generating a script using a script generating program according to an embodiment;
6 is a diagram illustrating a web browser screen displaying an exemplary target site;
7 is a diagram illustrating an exemplary operation list in a script generating program;
8 is a view for explaining a user interface of a work schedule generating program according to an embodiment;
9 is a view for explaining an operation of a work schedule generating program according to an embodiment.

이상의 본 발명의 목적들, 다른 목적들, 특징들 및 이점들은 첨부된 도면과 관련된 이하의 바람직한 실시예들을 통해서 쉽게 이해될 것이다. 그러나 본 발명은 여기서 설명되는 실시예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 오히려, 여기서 소개되는 실시예들은 개시된 내용이 철저하고 완전해질 수 있도록 그리고 당업자에게 본 발명의 사상이 충분히 전달될 수 있도록 하기 위해 제공되는 것이다. The above objects, other objects, features and advantages of the present invention will be easily understood through the following preferred embodiments in conjunction with the accompanying drawings. However, the present invention is not limited to the embodiments described herein and may be embodied in other forms. Rather, the embodiments introduced herein are provided so that the disclosed subject matter may be thorough and complete, and that the spirit of the present invention may be sufficiently conveyed to those skilled in the art.

본 명세서에서 제1, 제2 등의 용어가 구성요소들을 기술하기 위해서 사용된 경우, 이들 구성요소들이 이 같은 용어들에 의해서 한정되어서는 안된다. 이들 용어들은 단지 어느 구성요소를 다른 구성요소와 구별시키기 위해서 사용되었을 뿐이다. 여기에 설명되고 예시되는 실시예들은 그것의 상보적인 실시예들도 포함한다.In this specification, when terms such as first, second, etc. are used to describe components, these components should not be limited by these terms. These terms are only used to distinguish one component from another. The embodiments described and illustrated herein also include complementary embodiments thereof.

본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 '~를 포함한다', '~로 구성된다', 및 '~으로 이루어진다'라는 표현은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.In this specification, the singular also includes the plural unless specifically stated otherwise in the phrase. The expressions 'comprising', 'consisting of', and 'consisting of' as used in the specification do not exclude the presence or addition of one or more other elements in addition to the stated elements.

본 명세서에서 용어 '소프트웨어'는 컴퓨터에서 하드웨어를 움직이는 기술을 의미하고, 용어 '하드웨어'는 컴퓨터를 구성하는 유형의 장치나 기기(CPU, 메모리, 입력 장치, 출력 장치, 주변 장치 등)를 의미하고, 용어 '단계'는 소정의 목을 달성하기 위해 시계열로 연결된 일련의 처리 또는 조작을 의미하고, 용어 '컴퓨터 프로그램', '프로그램', 또는 '알고리즘'은 컴퓨터로 처리하기에 합한 명령의 집합을 의미하고, 용어 '프로그램 기록 매체'는 프로그램을 설치하고 실행하거나 유통하기 위해 사용되는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 의미한다. As used herein, the term 'software' refers to a technology that moves hardware in a computer, and the term 'hardware' refers to a tangible device or device (CPU, memory, input device, output device, peripheral device, etc.) constituting the computer, and , the term 'step' means a series of processing or manipulations linked in time series to achieve a predetermined goal, and the term 'computer program', 'program', or 'algorithm' refers to a set of instructions that are summed up for processing by a computer. means, and the term 'program recording medium' refers to a computer-readable recording medium in which a program used for installing, executing, or distributing a program is recorded.

본 명세서에서 발명의 구성요소를 지칭하기 위해 사용된 '~노드', '~부', '~모듈', '~유닛', '~블록', '~보드' 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 물리적, 기능적, 또는 논리적 단위를 의미할 수 있고 이는 하나 이상의 하드웨어나 소프트웨어 또는 펌웨어로 구현되거나 또는 하나 이상의 하드웨어, 소프트웨어, 및/또는 펌웨어의 결합으로 구현될 수 있다. Terms such as '~ node', '~ unit', '~ module', '~ unit', '~ block', and '~ board' used in this specification to refer to the elements of the present invention are at least one function. It may mean a physical, functional, or logical unit that processes an operation, which may be implemented as one or more hardware, software, or firmware, or a combination of one or more hardware, software, and/or firmware.

본 명세서에서 '모바일 기기', '컴퓨터', '컴퓨팅 장치', '서버 장치', 또는 '서버'는 윈도우, 맥, 또는 리눅스와 같은 운영체제, 컴퓨터 프로세서, 메모리, 응용프로그램들, 기억장치(예를 들면, HDD, SDD), 및 모니터를 구비한 장치로 구현될 수 있다. 컴퓨터는 예를 들면, 데스크톱 컴퓨터나 노트북, 모바일 단말기 등과 같은 장치일 수 있으나 이들은 예시적인 것이며 이에 한정되는 것은 아니다. 모바일 단말기는 스마트폰, 태블릿 PC, 또는 PDA와 같은 모바일 무선통신기기 중 하나일 수 있다. As used herein, 'mobile device', 'computer', 'computing device', 'server device', or 'server' refers to an operating system such as Windows, Mac, or Linux, a computer processor, memory, applications, storage device (eg For example, HDD, SDD), and a device having a monitor may be implemented. The computer may be, for example, a device such as a desktop computer, a notebook computer, or a mobile terminal, but these are exemplary and not limited thereto. The mobile terminal may be one of a smart phone, a tablet PC, or a mobile wireless communication device such as a PDA.

본 명세서에서, 구성요소 'A'가 구성요소 'B'에게 정보, 내역, 및/ 또는 데이터를 전송한다고 함은 구성요소 'A'가 구성요소 'B'에게 직접 전송하거나 또는 구성요소 'A'가 적어도 하나 이상의 다른 구성요소를 통해서 구성요소 'B'에 전송하는 것을 포함하는 의미로 사용한다.In this specification, a reference to component 'A' transmitting information, details, and/or data to component 'B' means that component 'A' transmits directly to component 'B' or component 'A' is used in the meaning including transmitting to component 'B' through at least one or more other components.

이하 도면을 참조하여 본 발명을 상세히 설명하도록 한다. 아래의 특정 실시예들을 기술하는데 있어서 여러 가지의 특정적인 내용들은 발명을 더 구체적으로 설명하고 이해를 돕기 위해 작성되었다. 하지만 본 발명을 이해할 수 있을 정도로 이 분야의 지식을 갖고 있는 독자는 이러한 여러 가지의 특정적인 내용들이 없어도 사용될 수 있다는 것을 인지할 수 있다. 또한 발명을 기술하는 데 있어서 공지 또는 주지관용 기술이면서 발명과 크게 관련 없는 부분들은 본 발명을 설명하는 데 있어 혼돈을 막기 위해 기술하지 않음을 미리 언급해 둔다. Hereinafter, the present invention will be described in detail with reference to the drawings. In describing the specific embodiments below, various specific contents have been prepared to more specifically describe the invention and help understanding. However, a reader having enough knowledge in this field to understand the present invention may recognize that the present invention may be used without these various specific details. In addition, it is mentioned in advance that parts that are well-known or commonly used techniques in describing the invention, but not largely related to the invention, are not described in order to avoid confusion in describing the present invention.

도1은 본 발명의 일 실시예에 따른 웹 스크래핑 시스템(100)을 포함하는 네트워크 구성을 개략적으로 도시하였다. 도1을 참조하면 일 실시예에 따른 웹 스크래핑 시스템(100)은 통신 네트워크(30)를 통해 하나 이상의 웹 스크래퍼(10) 및 하나 이상의 타겟 사이트(20)와 통신할 수 있다. 1 schematically shows a network configuration including a web scraping system 100 according to an embodiment of the present invention. Referring to FIG. 1 , a web scraping system 100 according to an embodiment may communicate with one or more web scrapers 10 and one or more target sites 20 through a communication network 30 .

웹 스크래핑 시스템(100)은 각 웹 스크래퍼(10)가 수행할 스크래핑 작업을 정의하는 명령어(스크립트)를 생성하고 관리하며 스케줄에 따라 웹 스크래퍼(10)에게 잡(job)(일반적인 의미의 '작업'과 구별하기 위해 본 명세서에서 '잡'(job)이라고 표현하지만 명세서에서 '잡' 또는 '작업'으로 혼용하기도 함)을 전달하는 역할을 한다. The web scraping system 100 generates and manages a command (script) defining a scraping job to be performed by each web scraper 10, and gives the web scraper 10 a job (a 'job' in a general sense) according to a schedule. In order to distinguish it from 'job' in this specification, it serves to convey the word 'job' or 'job').

웹 스크래퍼(10)는 스크래핑할 대상이 되는 웹 사이트(이하 “타겟 사이트”라고 함)(20)에 접속하여 각 타겟 사이트(20)에서 디지털 컨텐츠를 스크래핑하는 장치이다. 각각의 웹 스크래퍼(10)는 클라우드 환경에서 서로 독립된 컴퓨터 장치일 수 있다. 즉 각각의 웹 스크래퍼(10)는 웹 스크래핑 시스템(100) 및 다른 웹 스크래퍼(10)에 대해 물리적으로 및/또는 논리적으로 독립적인 프로세서(CPU), 메모리, 저장장치(예컨대 HDD 또는 SSD), 및 운영체제(OS)를 구비하고 그에 기반하여 동작하는 독립적인 컴퓨터 장치일 수 있고 유선 및/또는 무선 통신 네트워크(30)를 통해 웹 스크래핑 시스템(100) 및 타겟 사이트(20)와 통신 가능하도록 연결될 수 있다. The web scraper 10 is a device for scraping digital content from each target site 20 by accessing a web site to be scraped (hereinafter referred to as a “target site”) 20 . Each web scraper 10 may be a computer device independent of each other in a cloud environment. That is, each web scraper 10 is physically and/or logically independent of the web scraping system 100 and other web scrapers 10, including a processor (CPU), memory, storage (eg HDD or SSD), and It may be an independent computer device having an operating system (OS) and operating based thereon, and may be communicatively connected to the web scraping system 100 and the target site 20 through a wired and/or wireless communication network 30 . .

각각의 웹 스크래퍼(10)는 웹 스크래핑 시스템(100)으로부터 수신한 잡(job)에 따라 웹 스크래핑 동작을 실행하고, 타겟 사이트(20)로부터 스크래핑한 디지털 콘텐츠를 웹 스크래핑 시스템(100)으로 전송할 수 있다. Each web scraper 10 executes a web scraping operation according to a job received from the web scraping system 100 , and transmits the digital content scraped from the target site 20 to the web scraping system 100 . have.

한편 본 명세서에서 "웹 스크래핑 시스템"은 협의의 의미에서 도1의 웹 스크래핑 시스템(100)만을 지칭할 수도 있지만 광의의 의미에서 웹 스크래퍼(10)를 포함하는 의미로 사용되기도 하며, 또는 더 넓은 의미로 웹 스크래퍼(10)와 관리자 단말(도2의 40)을 포함하는 의미로 사용될 수도 있다. Meanwhile, in this specification, the term "web scraping system" may refer to only the web scraping system 100 of FIG. 1 in a narrow sense, but is also used in a broader sense to include the web scraper 10, or in a broader sense. It may also be used to mean including the raw web scraper 10 and the manager terminal (40 in FIG. 2 ).

웹 스크래핑 시스템(100)은 웹 스크래퍼(10)로부터 수신한 스크래핑 결과물, 즉 디지털 콘텐츠를 데이터베이스에 저장할 수 있고, 디지털 콘텐츠를 필요에 따라 가공하거나 표준화하여 웹서버를 통해 사용자에게 제공할 수 있다. 예를 들어 스크래핑 대상이 되는 타겟 사이트(20)가 컨테이너 선박을 소유하고 있는 선사들의 사이트이고 각 선사 사이트에서 웹 스크래퍼(10)가 선박 스케줄을 스크래핑하는 경우를 가정하면, 각 웹 스크래퍼(10)는 특정 선사 사이트에 대한 스크래핑 작업을 정의하는 잡(job)을 웹 스크래핑 시스템(100)으로부터 수신하고 이에 따라 각 선사 사이트에 액세스하여 해당 선사의 선박 스케줄을 스크래핑한 후 웹 스크래핑 시스템(100)에 전송한다. 웹 스크래핑 시스템(100)은 모든 웹 스크래퍼(10)로부터 수신한 선박 스케줄을 가공하거나 표준화하여 웹서버를 통해 하나의 통합된 선박 예매 사이트에서 선박 스케줄을 제공하고 예약을 받을 수 있다. The web scraping system 100 may store the scraping result received from the web scraper 10, ie, digital content, in a database, process or standardize the digital content as needed, and provide it to the user through a web server. For example, assuming that the target site 20 to be scraped is the site of shipping companies owning container ships, and the web scraper 10 scrapes the ship schedule at each shipping site, each web scraper 10 is Receives a job defining a scraping job for a specific shipping company site from the web scraping system 100, accesses each shipping company site accordingly, scrapes the shipping schedule of the shipping company, and transmits it to the web scraping system 100 . The web scraping system 100 may process or standardize the vessel schedules received from all web scrapers 10 to provide vessel schedules and receive reservations from one integrated vessel reservation site through a web server.

한편 도1에서 웹 스크래퍼(10) 및 타겟 사이트(20)로서 각각 3개의 웹 스크래퍼(11,12,13)와 3개의 타겟 사이트(21,22,23)를 도시하였지만 이 개수는 예시적인 것이며, 본 발명의 실제 구현시에는 2개 이상의 임의의 복수개의 웹 스크래퍼(10)를 이용하여 복수개의 타겟 사이트(20)에 대한 스크래핑을 수행함을 이해할 것이다. On the other hand, as the web scraper 10 and the target site 20 in Fig. 1, respectively, three web scrapers 11, 12, 13 and three target sites 21, 22, 23 are shown, but these numbers are exemplary, It will be understood that scraping for a plurality of target sites 20 is performed using two or more arbitrary plurality of web scrapers 10 in actual implementation of the present invention.

또한 도1에서 통신 네트워크(30)는 웹 스크래핑 시스템(100), 웹 스크래퍼(10), 및 타겟 사이트(20) 간에 통신할 수 있는 유선 및/또는 무선 통신 네트워크 중 적어도 하나를 의미할 수 있으며, 예를 들어 인터넷, LAN(Local Area Network), MAN(Metropolitan Area Network), GSM(Global System for Mobile Network), HSDPA(High Speed Downlink Packet Access), 와이-파이(Wi-Fi), VoIP(Voice over Internet Protocol), 3GPP Long Term Evolution (LTE) 등에서 선택되는 하나 이상의 유선 및/또는 무선 통신 네트워크를 의미할 수 있다. In addition, in FIG. 1, the communication network 30 may mean at least one of a wired and/or wireless communication network capable of communicating between the web scraping system 100, the web scraper 10, and the target site 20, Internet, Local Area Network (LAN), Metropolitan Area Network (MAN), Global System for Mobile Network (GSM), High Speed Downlink Packet Access (HSDPA), Wi-Fi, Voice over VoIP Internet Protocol), 3GPP Long Term Evolution (LTE), etc. may mean one or more wired and/or wireless communication networks.

도2는 일 실시예에 따른 웹 스크래핑 시스템을 설명하는 도면이다. 2 is a diagram illustrating a web scraping system according to an embodiment.

도2를 참조하면, 일 실시예에 따른 웹 스크래핑 시스템(100)은 관리노드(110), 데이터베이스(DB) 노드(120), 및 서비스 노드(130)를 포함할 수 있다. 그러나 상술한 것처럼 웹 스크래핑 시스템(100)이 광의의 의미로 사용되는 경우 웹 스크래핑 시스템(100)은 작업노드(10)와 관리자 단말(40) 중 적어도 하나를 더 포함할 수 있음을 이해할 것이다. Referring to FIG. 2 , the web scraping system 100 according to an embodiment may include a management node 110 , a database (DB) node 120 , and a service node 130 . However, as described above, when the web scraping system 100 is used in a broad sense, it will be understood that the web scraping system 100 may further include at least one of the work node 10 and the manager terminal 40 .

작업노드(10)는 하나 이상의 웹 스크래퍼(11,12,13)를 포함하며, 이하에서 각각의 웹 스크래퍼(11,12,13)을 각각 작업노드라고 칭하기로 한다. 각각의 작업노드(10)(즉, 각각의 웹 스크래퍼(11,12,13))는 도1을 참조하여 설명한 웹 스크래퍼(10)와 동일 또는 유사한 구성과 기능을 가진다. 각 작업노드(10)는 서로 독립된 컴퓨터 장치일 수 있고 통신 네트워크(30)를 통해 웹 스크래핑 시스템(100)과 통신한다. 각 작업노드(10)는 웹 스크래핑 시스템(100)으로부터 잡(job)을 수신하고 그에 따라 각 타겟 사이트(20)에 대한 스크래핑 동작을 수행한 후 스크래핑 결과물(스크래핑한 디지털 콘텐츠)을 웹 스크래핑 시스템(100)으로 전송할 수 있다. The work node 10 includes one or more web scrapers 11 , 12 , and 13 , and each of the web scrapers 11 , 12 , 13 will be referred to as a work node hereinafter. Each work node 10 (ie, each web scraper 11 , 12 , 13 ) has the same or similar configuration and function as the web scraper 10 described with reference to FIG. 1 . Each work node 10 may be a computer device independent of each other and communicates with the web scraping system 100 through the communication network 30 . Each job node 10 receives a job from the web scraping system 100, performs a scraping operation on each target site 20 accordingly, and then returns the scraping result (scrapped digital content) to the web scraping system ( 100) can be transmitted.

웹 스크래핑 시스템(100)의 관리노드(110)는 웹 스크래핑 시스템(100)의 동작을 전반적으로 관리하고 제어하는 역할을 한다. 도시한 실시예에서 관리노드(110)는 작업관리 모듈(111), 노드관리 모듈(112), 및 스크립트 관리 모듈(113)을 포함한다. The management node 110 of the web scraping system 100 serves to manage and control the overall operation of the web scraping system 100 . In the illustrated embodiment, the management node 110 includes a job management module 111 , a node management module 112 , and a script management module 113 .

작업관리 모듈(111)은 스크래핑 작업을 관리하는 기능부이다. 예를 들어 작업관리 모듈(111)은 스크래핑 작업에 대한 스케줄("작업 스케줄")을 생성하고 몇 개의 작업노드(10)에게 스크래핑을 실행시킬 것인지, 각 작업노드(10)가 스크래핑을 언제 실행해야 할지 등을 설정하여 스크래핑에 대한 각종 관리를 수행할 수 있다. The job management module 111 is a functional unit for managing a scraping job. For example, the job management module 111 creates a schedule (“job schedule”) for the scraping job, how many job nodes 10 to execute the scraping, and when each job node 10 executes the scraping. Various management for scraping can be performed by setting whether or not to do so.

일 실시예에서 시스템 관리자가 작업 스케줄 생성 프로그램을 통해 작업 스케줄을 작성하여 작업관리 모듈(111)에 작업 스케줄을 입력할 수 있다. 이 때 '작업 스케줄'은 예를 들어 웹 스크래핑 대상이 되는 타겟 사이트를 지정하거나 스크래핑할 구체적인 객체를 지정하거나 웹 스크래핑의 실행 일정(예컨대 실행 시간, 실행 주기 등)을 지정하는 데이터를 포함한다. 또한 작업 스케줄 생성 프로그램은 예컨대 작업관리 모듈(111)에 설치될 수도 있고 관리자 단말(40) 등 웹 스크래핑 시스템(100) 외부에 설치될 수도 있다. 일 실시예에서 작업 스케줄 생성 프로그램은 관리자가 작업 스케줄을 편리하게 작성할 수 있도록 템플릿을 제공할 수 있으며 이에 대해서는 도8 및 도9를 참조하여 후술하기로 한다. In an embodiment, the system administrator may create a job schedule through the job schedule generating program and input the job schedule to the job management module 111 . In this case, the 'job schedule' includes, for example, data that specifies a target site to be web scraped, specifies a specific object to be scraped, or specifies an execution schedule (eg, execution time, execution cycle, etc.) of web scraping. In addition, the job schedule generation program may be installed in the job management module 111 or may be installed outside the web scraping system 100 such as the manager terminal 40 . In one embodiment, the work schedule generating program may provide a template so that an administrator can conveniently create a work schedule, which will be described later with reference to FIGS. 8 and 9 .

노드관리 모듈(112)은 작업노드(10)를 관리하는 기능부이다. 노드관리 모듈(112)은 각각의 작업노드(10), 즉 각각의 웹 스크래퍼(11,12,13)의 상태를 모니터링하고 각 작업노드(10)에게 스크래핑을 위한 잡(job)을 전달할 수 있다. 예를 들어, 노드관리 모듈(112)은 각 작업노드(10)의 전원의 온/오프 상태를 확인하고 각 작업노드(10)의 비정상적인 동작이나 오류가 발생하는지 여부를 모니터링 할 수 있다. 또한 노드관리 모듈(112)은 각 작업노드(10)의 자원들의 사용 현황, 예컨대 메모리 사용량, 프로세서(CPU) 사용량, 및 저장장치(HDD 또는 SSD 등) 사용량을 모니터링 할 수 있고, 이러한 모니터링 결과에 기초하여 현재 사용가능한 작업노드(10)에 잡(job)을 전달하여 스크래핑 작업을 부여할 수 있다. The node management module 112 is a functional unit that manages the work node 10 . The node management module 112 may monitor the status of each work node 10 , that is, each web scraper 11 , 12 , and 13 , and deliver a job for scraping to each work node 10 . . For example, the node management module 112 may check the on/off state of the power of each work node 10 and monitor whether an abnormal operation or an error of each work node 10 occurs. In addition, the node management module 112 may monitor the usage status of resources of each work node 10, for example, memory usage, processor (CPU) usage, and storage device (HDD or SSD, etc.) usage, and based on the monitoring result, Based on it, a scraping job can be given by delivering a job to the currently available job node 10 .

스크립트 관리 모듈(113)은 스크래핑을 수행하기 위해 각 작업노드(10)에 전달하는 작업 스크립트를 생성하고 관리하는 기능부이다. 작업 스크립트는 스크래핑 동작을 정의하는 알고리즘을 포함한다. 각 타겟 사이트(20)마다 데이터를 정의하고 배열하는 방식이 상이하므로 각 타겟 사이트(20)마다 이에 대응하는 작업 스크립트가 각기 상이할 수 있다. The script management module 113 is a functional unit that generates and manages a work script to be delivered to each work node 10 to perform scraping. The job script contains an algorithm that defines the scraping operation. Since a method of defining and arranging data is different for each target site 20 , a corresponding work script may be different for each target site 20 .

본 발명의 일 실시예에서는 관리자가 각 타겟 사이트(20)에 대한 작업 스크립트를 쉽게 작성할 수 있도록 하는 스크립트 생성 모듈(스크립트 생성 프로그램)을 제공할 수 있다. 스크립트 생성 모듈은 관리자가 작업 스크립트를 편리하게 작성할 수 있도록 템플릿을 제공할 수 있다. 예를 들어 스크립트 생성 모듈은 사용자 인터페이스(UI)를 통해 사용자에게 템플릿을 제공하고 이 템플릿에 입력된 사용자 입력에 따라 작업 스크립트를 생성할 수 있다. 도2는 관리자 단말(40)에 이러한 스크립트 생성 모듈(200)이 설치된 것을 예시적으로 도시하였다. 그러나 대안적으로 스크립트 생성 모듈(200)이 웹 스크래핑 시스템(100)의 임의의 기능부에 설치될 수 있다. 예컨대 스크립트 생성 모듈(200)이 관리노드(110) 내의 모듈(111,112,113)에 통합되어 설치되거나 이 모듈(111,112,1130과 독립적인 프로그램으로서 설치될 수 있음을 이해할 것이다. In an embodiment of the present invention, a script generating module (script generating program) may be provided so that an administrator can easily create a work script for each target site 20 . The script generation module may provide a template so that an administrator can conveniently create a job script. For example, the script generation module may provide a template to a user through a user interface (UI) and generate a job script according to a user input input to the template. 2 exemplarily shows that such a script generation module 200 is installed in the manager terminal 40 . However, alternatively, the script generating module 200 may be installed in any functional part of the web scraping system 100 . For example, it will be understood that the script generation module 200 may be installed integrated into the modules 111 , 112 , and 113 in the management node 110 , or may be installed as a program independent of the modules 111 , 112 , and 1130 .

데이터베이스(DB) 노드(120)는 웹 스크래핑에 대한 각종 데이터를 저장하는 데이터베이스(DB)를 포함한다. 예를 들어 DB노드(120)의 DB는 작업관리 모듈(111)이 관리하는 작업 스케줄, 및 스크립트 관리 모듈(113) 또는 스크립트 생성 모듈(200)에서 생성된 작업 스크립트를 저장할 수 있다. 또한 DB 노드(120)의 DB는 각 작업노드(10)로부터 수신한 스크래핑 결과물, 즉 각 타겟 사이트로부터 스크래핑한 디지털 콘텐츠를 저장할 수 있다. Database (DB) node 120 includes a database (DB) for storing various data for web scraping. For example, the DB of the DB node 120 may store a job schedule managed by the job management module 111 and a job script generated by the script management module 113 or the script generation module 200 . In addition, the DB of the DB node 120 may store the scraping result received from each work node 10 , that is, the digital content scraped from each target site.

서비스 노드(130)는 타겟 사이트로부터 수집하고 DB 노드(120)의 DB에 저장된 디지털 콘텐츠를 가공하거나 표준화하고 이를 일반 사용자에게 제공하는 기능부이다. 일 실시예에서 서비스 노드(130)는 DB 노드(120)로부터 데이터를 불러와서 사용자에게 제공하는 웹서버를 포함할 수 있다. 예를 들어 본 발명의 웹 스크래핑 시스템(100)이 선사 사이트로부터 선박 스케줄을 스크래핑하는 것에 사용되는 경우, 서비스 노드(130)는 각 선사 사이트로부터 수집한 선박 스케줄을 웹서버를 통해 제공하고, 일반 사용자(즉, 선박을 예약하고자 하는 사용자)는 사용자 단말(50)을 통해 해당 웹 서버에 접속하여 선박 스케줄 조회, 화물운송 예약 등의 서비스를 이용할 수 있다. The service node 130 is a functional unit that processes or standardizes digital content collected from the target site and stored in the DB of the DB node 120 and provides it to general users. In an embodiment, the service node 130 may include a web server that retrieves data from the DB node 120 and provides it to the user. For example, when the web scraping system 100 of the present invention is used to scrape a ship schedule from a shipping site, the service node 130 provides the vessel schedule collected from each shipping site through a web server, and a general user (ie, a user who wants to reserve a ship) may access a corresponding web server through the user terminal 50 and use services such as ship schedule inquiry and cargo transportation reservation.

관리자 단말(40)은 유선 또는 무선 통신망을 통해 웹 스크래핑 시스템(100)과 통신 가능하도록 연결될 수 있고 웹 스크래핑 시스템(100)의 관리자가 웹 스크래핑 시스템(100)을 관리할 수 있도록 사용자 인터페이스를 제공하는 컴퓨터 장치이다. 예를 들어 관리자 단말(40)은 데스크탑 컴퓨터, 노트북 컴퓨터, 태블릿, 휴대폰 등 임의의 컴퓨터 장치일 수 있다. 일 실시예에서 관리자 단말(40)에 스크립트 생성 모듈(200)이 설치될 수 있고 관리자가 이를 이용하여 웹 스크래핑을 위한 스크립트를 작성할 수 있다. 또한 일 실시예에서 관리자 단말(40)에 작업 스케줄 생성 프로그램이 설치될 수도 있으며, 관리자가 이를 이용하여 웹 스크래핑을 위한 작업 스케줄을 작성할 수도 있다. The manager terminal 40 may be connected to communicate with the web scraping system 100 through a wired or wireless communication network, and provides a user interface so that the administrator of the web scraping system 100 can manage the web scraping system 100 It is a computer device. For example, the manager terminal 40 may be any computer device such as a desktop computer, a notebook computer, a tablet, or a mobile phone. In one embodiment, the script generating module 200 may be installed in the manager terminal 40, and the manager may write a script for web scraping by using it. In addition, according to an embodiment, a work schedule generating program may be installed in the manager terminal 40, and the manager may create a work schedule for web scraping by using it.

도3은 일 실시예에 따라 웹 스크래핑을 위해 웹 스크래핑 시스템(100)의 관리노드(110)와 작업노드(10)간 동작 관계를 설명하기 위한 도면이다. 3 is a diagram for explaining the operational relationship between the management node 110 and the work node 10 of the web scraping system 100 for web scraping according to an embodiment.

도3을 참조하면, 우선 단계(S10)에서, 관리노드(110)에서 작업 스크립트를 생성하고 저장한다. 예를 들어 관리자가 관리노드(110) 또는 관리자 단말(40)에 설치된 스크립트 생성 모듈(200)을 이용하여 작업 스크립트를 생성할 수 있다. 이 때 '작업 스크립트'는 각 작업노드(10)(즉, 각각의 웹 스크래퍼(11,12,13))가 타겟 사이트(20)의 디지털 콘텐츠를 스크래핑 하도록 하는 명령어를 포함하는 데이터일 수 있다. Referring to FIG. 3 , first, in step S10 , the management node 110 generates and stores a job script. For example, an administrator may generate a job script using the script generation module 200 installed in the management node 110 or the administrator terminal 40 . At this time, the 'job script' may be data including a command for each job node 10 (ie, each web scraper 11 , 12 , 13 ) to scrape digital content of the target site 20 .

일 실시예에서 작업 스크립트는 각 작업노드(10)로 하여금 가상 브라우저 방식으로 웹 스크래핑을 하도록 하는 명령어로 구성된다. 이 때 '가상 브라우저' 방식은 실제로 사람이 웹 브라우저를 이용하여 특정 타겟 사이트에 접속하여 데이터를 스크래핑하는 것과 유사한 방식으로 동작하는 것을 의미한다. 예를 들어 사람이 타겟 사이트의 메인 페이지에 접속하여 로그인을 하고 스크래핑 할 웹페이지에 액세스하여 스크래핑을 하는 것처럼, 각 작업노드(10)가 메인 페이지, 로그인 페이지, 스크래핑할 콘텐츠가 있는 웹페이지 등으로 단계적으로 접속한 후 스크래핑 하도록 작업 스크립트가 작성된다. In one embodiment, the job script is composed of commands that cause each job node 10 to perform web scraping in a virtual browser manner. In this case, the 'virtual browser' method means that a person actually uses a web browser to access a specific target site and operates in a similar way to scraping data. For example, just as a person accesses the main page of the target site and logs in and accesses the web page to be scraped and performs scraping, each work node 10 uses a main page, a login page, a web page with content to be scraped, etc. After connecting step by step, a working script is written to scrape.

또한 본 발명의 일 실시예에서 스크립트 생성 모듈(200)은 관리자가 작업 스크립트를 편리하게 작성할 수 있도록 템플릿을 제공하는 사용자 인터페이스(UI)를 구비한다. 이와 관련하여 템플릿을 제공하는 예시적인 스크립트 생성 모듈(200)에 대해 도4 내지 도6을 참조하여 설명하기로 한다. In addition, in an embodiment of the present invention, the script generating module 200 includes a user interface (UI) that provides a template so that an administrator can conveniently write a work script. In this regard, an exemplary script generating module 200 that provides a template will be described with reference to FIGS. 4 to 6 .

도4는 일 실시예에 따른 스크립트 생성 모듈(200)의 예시적인 사용자 인터페이스(UI)를 개략적으로 도시하였다. 도4에 도시한 사용자 인터페이스((UI)는 예컨대 관리자 단말(40)에서 스크립트 생성 모듈(200)을 실행했을 때 관리자 단말(40)의 모니터에 디스플레이되는 화면일 수 있다. 일 실시예에서 스크립트 생성 모듈(200)은 적어도 작업 템플릿 영역(210), 오브젝트 표시 영역(220), 및 스크립트 표시 영역(230)으로 구획된 사용자 인터페이스(UI)를 제공할 수 있다. 도시한 실시예에서는 화면의 왼쪽에서 오른쪽으로 작업 템플릿 영역(210), 오브젝트 표시 영역(220), 및 스크립트 표시 영역(230)이 배열되었지만 이는 예시적인 것이며 각 영역(210,220,230)의 배열 형태가 달라질 수 있음은 물론이다. 4 schematically illustrates an exemplary user interface (UI) of the script generation module 200 according to an embodiment. The user interface (UI) shown in Fig. 4 may be, for example, a screen displayed on the monitor of the manager terminal 40 when the script generation module 200 is executed in the manager terminal 40. Script generation in one embodiment The module 200 may provide a user interface (UI) partitioned into at least a work template area 210, an object display area 220, and a script display area 230. In the illustrated embodiment, on the left side of the screen, Although the work template area 210 , the object display area 220 , and the script display area 230 are arranged to the right, these are exemplary and the arrangement of each area 210 , 220 , and 230 may vary.

작업 템플릿 영역(210)은 사용자가 작업 스크립트의 작성을 편리하게 할 수 있도록 스크립트에 입력되는 항목을 미리 템플릿 형식으로 제공하고 사용자가 각 입력창에 데이터를 기입할 수 있는 영역이다. The work template area 210 is an area in which the items input to the script are provided in advance in a template format so that the user can conveniently write the work script, and the user can write data in each input window.

오브젝트 표시 영역(220)은, 작업 템플릿 영역(210)에서 사용자가 입력창에 데이터를 입력하여 한 단위의 '오브젝트'를 생성하였을 때 이렇게 생성된 한 단위의 오브젝트(221)를 하나의 사각형 박스의 아이콘으로 표시하여 사용자가 쉽고 직관적으로 알아볼 수 있도록 하는 영역이다. 여기서 '오브젝트'는 가상 브라우저 방식의 스크래핑 작업을 위해 작업노드(10)가 타겟 사이트에 액세스하여 순차적으로 해야 할 각 단계의 작업을 정의하는 명령어 집합 단위이다. In the object display area 220, when the user inputs data into the input window in the work template area 210 to create a unit of 'object', the object 221 of one unit thus created is displayed in a single rectangular box. It is an area that is displayed as an icon so that the user can easily and intuitively recognize it. Here, the 'object' is a unit of instruction set that defines the operation of each step to be sequentially performed by the operation node 10 accessing the target site for the virtual browser-type scraping operation.

예를 들어, 가상 브라우저 방식에서 작업노드(10)가 타겟 사이트(20)의 메인 페이지와 로그인 페이지를 거쳐 스크래핑할 콘텐츠가 있는 웹페이지로 이동하여 스크래핑 동작을 해야 한다고 가정할 때, 제1 오브젝트는 작업노드(10)가 타겟 사이트의 메인 웹페이지(홈페이지)에 접속하는 동작을 정의하고, 제2 오브젝트는 작업노드(10)가 메인 웹페이지의 로그인 버튼을 클릭하는 동작을 정의하고, 제3 오브젝트는 작업노드(10)가 로그인 버튼의 클릭에 의해 접속된 로그인 페이지에서 아이디 입력창에 아이디를 입력하는 동작을 정의하고, 제4 오브젝트는 작업노드(10)가 로그인 페이지에서 패스워드 입력창에 패스워드를 입력하는 동작을 정의하고, 제5 오브젝트는 작업노드(10)가 로그인 페이지에서 (아이디와 패스워드가 모두 입력된 상태에서) '로그인' 또는 '확인' 버튼을 누르는 동작을 정의하고, 그 후 예컨대 제6 오브젝트는 상기 '로그인' 또는 '확인' 버튼의 클릭에 의해 액세스한 회원 전용 웹페이지에서 특정 디지털 콘텐츠를 스크래핑하는 동작을 정의할 수 있다. For example, in the virtual browser method, when it is assumed that the task node 10 needs to perform a scraping operation by going through the main page and the login page of the target site 20 to a web page containing content to be scraped, the first object is The operation node 10 defines the operation of accessing the main web page (homepage) of the target site, the second object defines the operation of the operation node 10 clicking the login button of the main web page, the third object defines an operation in which the work node 10 inputs an ID to the ID input window on the login page accessed by clicking the login button, and the fourth object is the work node 10 enters a password in the password input window on the login page. Defines an input operation, and the fifth object defines an operation in which the work node 10 presses the 'login' or 'confirm' button on the login page (in a state where both ID and password are input), and then, for example, 6 object may define an operation of scraping specific digital content from a member-only webpage accessed by clicking the 'login' or 'confirm' button.

이러한 방식으로 예컨대 하나의 타겟 사이트에 대해 메인 웹페이지에 접속하는 단계부터 스크래핑을 완료하는 단계에 이르기까지 각 단계에 대응하는 오브젝트를 순차적으로 작성하여 해당 타겟 사이트에 대한 웹 스크래핑을 수행하는 전체 작업 스크립트를 완성할 수 있으며, 이 때 작업 템플릿 영역(210)에서 각 오브젝트를 작성할 때마다 해당 오브젝트가 하나의 사각형 박스의 아이콘 형태로 오브젝트 표시 영역(220)에 순차적으로 표시된다. 오브젝트 표시 영역(220)에 표시된 오브젝트(221)의 사각형 박스에는 예컨대 도시한 것처럼 '수정' 및/또는 '삭제' 등의 버튼(222)이 표시될 수 있어 사용자가 해당 오브젝트(221)의 수정이나 삭제를 편리하게 할 수 있다. 예를 들어 사용자가 '수정' 버튼(222)을 누르면 해당 오브젝트(221)의 작성을 위해 사용자가 입력했던 템플릿 입력 내용이 작업 템플릿 영역(210)의 각 템플릿 입력창에 표시되고 사용자가 템플릿 입력 내용을 수정할 수 있다. In this way, for example, for one target site, from the step of accessing the main web page to the step of completing the scraping, an object corresponding to each step is sequentially created to perform web scraping for the target site. can be completed, and in this case, whenever each object is created in the work template area 210 , the corresponding object is sequentially displayed in the object display area 220 in the form of a single rectangular box icon. In the rectangular box of the object 221 displayed in the object display area 220, buttons 222 such as 'modify' and/or 'delete' may be displayed, for example, as shown, so that the user can edit or modify the object 221 . Deletion can be done conveniently. For example, when the user presses the 'edit' button 222, the template input content entered by the user for creating the object 221 is displayed in each template input window of the work template area 210, and the user enters the template can be modified.

스크립트 표시 영역(230)은 사용자가 현재까지 작성한 작업 스크립트(231)를 보여주는 영역이다. 즉, 오브젝트 표시 영역(220)은 사용자가 작성한 작업 스크립트를 간단한 박스 형태로 표시하는 것이고 스크립트 표시 영역(230)은 작업 스크립트(231)를 특정 프로그래밍 언어나 문자열 형식에 따라 보여주는 영역일 수 있다. 도시한 실시예에서 작업 스크립트(231)를 JSON 형식의 문자열 데이터로 작성 및 표시하였다. 그러나 이는 예시적인 것이며 구체적 실시 형태에 따라 작업 스크립트를 JSON이 아닌 다른 스크립트 작성 언어나 문자열 형식으로 표시할 수 있음은 물론이다. The script display area 230 is an area showing the work script 231 written by the user so far. That is, the object display area 220 may display the work script written by the user in a simple box shape, and the script display area 230 may be an area that displays the work script 231 according to a specific programming language or string format. In the illustrated embodiment, the job script 231 was written and displayed as string data in JSON format. However, this is an example, and it goes without saying that the job script may be displayed in a script writing language other than JSON or in a string format according to specific embodiments.

한편 도시한 실시예에서 작업 템플릿 영역(210)은 템플릿명 입력창(211), 타이틀 입력창(212), URL 입력창(213), 키 입력창(214), 동작 지정 입력창(215), 시간설정 입력창(216), 리턴 키 입력창(217), 스크립트 실행 입력창(218) 등의 입력창을 포함할 수 있다. Meanwhile, in the illustrated embodiment, the work template area 210 includes a template name input window 211 , a title input window 212 , a URL input window 213 , a key input window 214 , an action designation input window 215 , It may include input windows such as a time setting input window 216 , a return key input window 217 , and a script execution input window 218 .

템플릿명 입력창(211)은 타겟 사이트의 목록이나 종류를 선택하는 입력창이다. 예를 들어 본 발명의 웹 스크래핑 시스템(100)으로 선사 사이트를 스크래핑할 경우, 각 선사 사이트의 목록이 미리 입력되어 있을 수 있고 입력창을 클릭하여 목록을 펼친 후 특정 선사를 선택할 수 있다. The template name input window 211 is an input window for selecting a list or type of target sites. For example, when scraping a shipping company site with the web scraping system 100 of the present invention, a list of each shipping company site may be input in advance, and a specific shipping company may be selected after expanding the list by clicking the input window.

타이틀 입력창(212)는 작성자가 현재 작성하는 오브젝트의 제목을 입력하는 창이며, 사용자가 임의의 명칭으로 오브젝트 제목을 입력할 수 있다. The title input window 212 is a window for the author to input the title of the object currently being created, and the user can input the object title with an arbitrary name.

URL 입력창(213)은 타겟 사이트의 웹페이지 주소를 입력하는 창이며, 키 입력창(214)은 예컨대 웹페이지에 표시되는 '로그인', '확인' 등과 같은 특정 버튼을 지정하는 키를 입력하는 창이다. The URL input window 213 is a window for inputting a web page address of the target site, and the key input window 214 is for inputting a key for designating a specific button such as 'login' and 'confirm' displayed on a web page, for example. it's a window

동작 지정 입력창(215)은 현재 웹페이지에서 작업노드(10)가 어떤 동작을 수행해야 할지를 지정하는 입력창이다. 일 실시예에서 동작 지정 입력창(215)은 감추기/펼치기 방식으로 표시되고 사용자가 마우스 포인터로 입력창(215)을 클릭하면 예컨대 도7에 도시한 것과 같은 다양한 동작의 리스트(215a)가 표시될 수 있다. 예를 들어, 도7의 동작 리스트(215a)에서 'click'은 웹페이지에서 키 입력창(214)에 의해 지정된 특정 버튼을 클릭하는 동작이고, 'moveClick'은 예컨대 마우스 포인트를 움직이면서 클릭하는 동작이다. 'sendkeys'는 'Send_text' 항목에 입력된 밸류값을 전송하는 동작이다. 이 때 'Send_text'는 예컨대 웹페이지에서 아이디나 패스워드 입력창 또는 검색창에 넣을 문자열을 입력하는 창이다. 'getText'는 텍스트를 가지고 오는 동작으로서, 실제 스크래핑 동작을 수행할 경우 이 동작을 선택한다. 그리고 'iframe'은 페이지 안에 페이지를 넣는 iframe 태그를 사용한 경우 해당 프레임의 내용을 인식하는 동작이고, 'window' 및 'close'는 윈도우(창) 객체 자체를 가지고 오거나 닫는 동작이고 'alert'는 알림 창을 팝업하는 동작일 수 있다. The operation designation input window 215 is an input window for designating which operation the work node 10 should perform in the current web page. In one embodiment, the operation designation input window 215 is displayed in a hide/unfold method, and when the user clicks the input window 215 with a mouse pointer, a list 215a of various operations as shown in FIG. 7 is displayed. can For example, in the action list 215a of FIG. 7 , 'click' is an action of clicking a specific button designated by the key input window 214 on a web page, and 'moveClick' is an action of clicking while moving a mouse point, for example. . 'sendkeys' is an operation to transmit the value entered in the 'Send_text' field. In this case, 'Send_text' is, for example, a window for inputting a character string to be entered into an ID or password input box or a search box on a web page. 'getText' is an action to get text, and this action is selected when performing the actual scraping action. And 'iframe' is the action to recognize the contents of the frame when an iframe tag is used to put the page in the page, 'window' and 'close' are the actions to bring or close the window (window) object itself, and 'alert' is the notification It may be an action that pops up a window.

시간설정 입력창(216)은 작업노드(10)가 타겟 사이트 내에서 특정 작업을 순차적으로 수행할 때 지연 시간을 설정할 수 있는 입력창이다. 일반적으로 웹 페이지를 제공하는 웹서버 환경이나 네트워크 환경에 따라 예컨대 클릭 동작에 의해 한 웹페이지에서 다음 웹페이지로 전환하는데 시간이 소요되는 경우가 있다. 예를 들어 로그인 화면에서 아이디와 패스워드를 입력 후 클릭하면 소정 시간 대기한 후 로그인 화면으로 넘어가는 경우이다. 이러한 동작을 작업노드(10)가 가상 브라우저 방식으로 웹페이지에 액세스할 때 일정 시간 기다리지 않고 곧바로 다음 단계의 작업을 실행하도록 프로그래밍할 경우 스크래핑 작업이 정상적으로 수행되지 못할 수도 있다. 따라서 시간설정 입력창(216)을 통해 의도적인 지연 시간을 설정함으로써, 하나의 작업에서 다음 작업으로 전환할 때 지연 시간 이후 전환하도록 하여 스크래핑 작업을 정상적으로 수행할 수 있도록 보장할 수 있다. The time setting input window 216 is an input window for setting a delay time when the work node 10 sequentially performs a specific task within the target site. In general, depending on a web server environment or network environment that provides a web page, it may take time to switch from one web page to the next by, for example, a click operation. For example, if an ID and password are entered on the login screen and clicked, the login screen is displayed after waiting for a predetermined time. If the operation node 10 is programmed to immediately execute the next step without waiting for a predetermined time when accessing the web page in the virtual browser method, the scraping operation may not be performed normally. Therefore, by intentionally setting the delay time through the time setting input window 216 , it is possible to ensure that the scraping operation can be performed normally by switching after the delay time when switching from one job to the next.

리턴 키 입력창(217)은 리턴될 결과 밸류에 대한 키를 입력하는 창으로, 예를 들어 스크래핑 결과로서 수신한 데이터가 웹페이지의 어느 키에 해당하는 값인지를 설정할 수 있다. The return key input window 217 is a window for inputting a key for a result value to be returned. For example, it is possible to set which key of a web page corresponds to data received as a scraping result.

스크립트 실행 입력창(218)은 사용자의 필요에 따라 웹페이지 내에서 또 다른 연산이나 프로그램을 실행할 때 해당 연산이나 프로그램의 실행을 위한 명령어나 알고리즘을 입력하는 창이다. 예를 들어 어느 특정 웹페이지에 접속한 상태에서 해당 웹페이지에 표시된 밸류 값들을 변수로 하여 특정 연산(예컨대 더하기나 곱하기 등의 연산)을 수행하고 이 연산의 결과값을 스크래핑해야 하는 경우가 있을 수 있다. 이 경우 해당 연산을 정의하는 스크립트를 스크립트 실행 입력창(218)에서 작성하여 작업 스크립트(231)에 포함시킬 수 있다. The script execution input window 218 is a window for inputting a command or algorithm for executing another operation or program in a web page according to the user's need when executing another operation or program. For example, while accessing a specific web page, there may be cases where it is necessary to perform a specific operation (eg, an operation such as addition or multiplication) using the value values displayed on the web page as variables and scrape the result of this operation. have. In this case, a script defining the operation may be created in the script execution input window 218 and included in the job script 231 .

이상과 같이 사용자는 상술한 작업 템플릿 영역(210)의 각 입력창에 소정 내용을 기입하고 최종적으로 추가 버튼(219)을 클릭하여 하나의 오브젝트(221)를 생성하고 이 오브젝트(221)가 오브젝트 표시 영역(220)에 사각형 박스의 아이콘으로 표시되고 이 오브젝트(221)의 실제적인 작업 스크립트 내용이 JSON 형식으로 스크립트 표시 영역(230)에 표시됨을 이해할 것이다. As described above, the user writes predetermined content in each input window of the above-described work template area 210 and finally clicks the add button 219 to create one object 221 , and the object 221 displays the object. It will be understood that the area 220 is displayed as an icon of a square box, and the actual work script content of this object 221 is displayed in the script display area 230 in JSON format.

이제 도5와 도6을 참조하여 임의의 타겟 사이트에 로그인하여 액세스하는 동작을 정의하는 작업 스크립트를 작성하는 구체적 예를 설명하기로 한다. Now, with reference to Figs. 5 and 6, a specific example of writing a job script that defines an operation of logging in and accessing an arbitrary target site will be described.

도5는 일 실시예에 따른 스크립트 생성 모듈(200)을 사용하여 각 단계의 오브젝트를 작성하는 사용자 인터페이스(UI) 화면이고 도6은 타겟 사이트를 디스플레이하는 예시적인 웹 브라우저 화면(300)을 나타낸다. 5 is a user interface (UI) screen for creating an object of each step using the script generation module 200 according to an embodiment, and FIG. 6 shows an exemplary web browser screen 300 for displaying a target site.

우선, 사용자가 실제로 웹 브라우저를 통해 타겟 사이트에 접속하는 경우를 도6을 참조하여 설명하기로 한다. 도6(a)에 도시한 것처럼 사용자는 예컨대 마이크로소프트 엣지 또는 구글 크롬 등의 웹 브라우저를 실행하여 타겟 사이트의 메인 페이지(예컨대 홈페이지)에 접속한다. 메인 페이지의 우측 상단에 로그인을 위한 버튼(310)이 표시되어 있으며, 사용자가 마우스 포인터를 이 버튼(310) 위에 대고 클릭하면 도6(b)와 같은 로그인 페이지에 접속할 수 있다. First, a case in which a user actually accesses a target site through a web browser will be described with reference to FIG. 6 . As shown in Fig. 6(a), the user executes a web browser such as Microsoft Edge or Google Chrome to access the main page (eg, homepage) of the target site. A button 310 for login is displayed on the upper right of the main page, and when the user puts the mouse pointer on the button 310 and clicks it, the login page as shown in FIG. 6(b) can be accessed.

사용자는 로그인 페이지의 아이디 입력창(321)과 비밀번호 입력창(322)에 각각 아이디와 비밀번호를 입력하고 '로그인' 버튼(323)을 클릭하고, 이에 의해 예컨대 도6(c)와 같이 로그인된 웹페이지 화면이 표시될 수 있다. 또한 이 웹페이지에는 예컨대 우측 상단에 '로그아웃' 버튼(330)이 표시될 수도 있다. The user inputs an ID and password in the ID input window 321 and the password input window 322 of the login page, respectively, and clicks the 'login' button 323, thereby logging in the web as shown in FIG. 6(c), for example. A page screen may be displayed. Also, a 'logout' button 330 may be displayed on the web page, for example, in the upper right corner.

이제 이러한 동작을 작업노드(10)가 실행하도록 작업 스크립트를 작성하는 과정을 도5를 참조하여 설명한다. 도5(a)는 작업노드(10)가 타겟 사이트의 메인 페이지(홈페이지)에 접속하는 동작을 정의하는 오브젝트(이하 "제1 오브젝트"라 함)를 생성하는 화면이다. 사용자는 타이틀 입력창(212)에 제1 오브젝트의 제목을 입력하고 URL 입력창(213)에 타겟 사이트의 홈페이지 주소를 입력한다. 그 후 '추가' 버튼(219)을 클릭하여 제1 오브젝트를 작업 스크립트에 추가한다. Now, a process of creating a job script so that the job node 10 executes these operations will be described with reference to FIG. 5 . Fig. 5 (a) is a screen for creating an object (hereinafter referred to as a “first object”) defining the operation of the work node 10 to access the main page (homepage) of the target site. The user inputs the title of the first object in the title input window 212 and inputs the home page address of the target site in the URL input window 213 . Thereafter, the 'add' button 219 is clicked to add the first object to the job script.

도5(b)는 작업노드(10)가 메인 페이지의 우측 상단의 로그인 버튼(도6(a)의 310)을 클릭하는 동작을 정의하는 오브젝트("제2 오브젝트")를 생성하는 화면이다. 이 때 앞서 작성된 제1 오브젝트(221a)의 아이콘이 오브젝트 표시 영역(220)에 표시되고 제1 오브젝트(221a)의 실제 스크립트(231a)가 JSON 형식으로 스크립트 표시 영역(230)에 표시되고 있음을 이해할 것이다. 또한 여기서 사용자가 제1 오브젝트(221a)의 수정 버튼(222a)을 클릭하면 작업 템플릿 영역(210)에 제1 오브젝트의 템플릿 입력 내용이 나타나며 사용자가 제1 오브젝트를 수정할 수 있다. Fig. 5 (b) is a screen for creating an object (“second object”) defining the operation of the work node 10 clicking the login button (310 in Fig. 6 (a)) on the upper right of the main page. At this time, it will be understood that the icon of the previously created first object 221a is displayed on the object display area 220 and the actual script 231a of the first object 221a is displayed on the script display area 230 in JSON format. will be. Also, when the user clicks the edit button 222a of the first object 221a here, the template input content of the first object appears in the work template area 210 and the user can modify the first object.

제2 오브젝트의 생성을 위해 사용자는 타이틀 입력창(212)에 제2 오브젝트의 제목을 입력한다. 그리고 키 입력창(214)의 "BY" 항목에서 "xpath"를 선택하고 "KEY" 항목에 로그인 버튼을 의미하는 키 값을 입력한다. 이 때 로그인 버튼의 키 값은 예컨대 웹 브라우저에서 해당 웹 페이지에 대한 html 코드(예컨대 마이크로소프트 엣지나 구글 크롬 등의 웹 브라우저에서 F12 버튼을 눌렀을 때 보여지는 html 코드)에서 검색하여 찾을 수 있다. 그리고 동작 지정 입력창(215)에는 마우스 클릭을 의미하는 "click"을 지정할 수 있다. 그 후 '추가' 버튼(219)을 클릭하여 제2 오브젝트를 작업 스크립트에 추가한다. To create the second object, the user inputs the title of the second object into the title input window 212 . Then, "xpath" is selected from the "BY" item of the key input window 214 and a key value indicating a login button is inputted into the "KEY" item. At this time, the key value of the login button can be found by searching, for example, in the html code for the web page in the web browser (eg, the html code displayed when the F12 button is pressed in a web browser such as Microsoft Edge or Google Chrome). In addition, "click", which means a mouse click, may be designated in the action designation input window 215 . Then, click the 'Add' button 219 to add the second object to the job script.

도5(c)는 작업노드(10)가 로그인 페이지의 아이디 입력창(도6(b)의 321)에 아이디를 입력하는 동작을 정의하는 오브젝트("제3 오브젝트")를 생성하는 화면이다. 이 때 앞서 생성된 제1 오브젝트(221a) 및 제2 오브젝트(221b)의 아이콘들이 오브젝트 표시 영역(220)에 표시되고 제1 및 제2 오브젝트(221a, 221b)의 스크립트(231a, 231b)가 스크립트 표시 영역(230)에 표시된다. FIG. 5(c) is a screen for creating an object (“third object”) defining an operation in which the work node 10 inputs an ID to the ID input window ( 321 in FIG. 6( b )) of the login page. At this time, the icons of the previously generated first object 221a and the second object 221b are displayed on the object display area 220, and the scripts 231a and 231b of the first and second objects 221a and 221b are displayed as scripts. displayed on the display area 230 .

제3 오브젝트의 생성을 위해 사용자는 타이틀 입력창(212)에 제3 오브젝트의 제목을 입력하고, 키 입력창(214)에서 "xpath" 선택 및 아이디 입력창을 의미하는 키 값을 입력하고, 동작 지정 입력창(215)에서는 "sendkeys"를 선택하고 "Send_text"란에 아이디를 입력한다. 그 후 '추가' 버튼(219)을 클릭하여 제3 오브젝트를 작업 스크립트에 추가한다. To create the third object, the user inputs the title of the third object in the title input window 212 , selects “xpath” in the key input window 214 and inputs a key value indicating an ID input window, and operates In the designation input window 215, "sendkeys" is selected and an ID is input in the "Send_text" field. Thereafter, the third object is added to the job script by clicking the 'add' button 219.

도5(d)는 작업노드(10)가 로그인 페이지의 패스워드 입력창(도6(b)의 322)에 패스워드를 입력하는 동작을 정의하는 오브젝트("제4 오브젝트")를 생성하는 화면이다. 이 때 앞서 생성된 제1 내지 제3 오브젝트(221a, 221b, 221c)의 아이콘들이 오브젝트 표시 영역(220)에 표시되고 제1 내지 제3 오브젝트의 스크립트(231a, 231b, 231c)가 스크립트 표시 영역(230)에 표시되고 있다. Fig. 5 (d) is a screen for creating an object (“fourth object”) defining the operation of the work node 10 inputting a password into the password input window (322 of Fig. 6 (b)) of the login page. At this time, the icons of the previously created first to third objects 221a, 221b, and 221c are displayed in the object display area 220, and the scripts 231a, 231b, and 231c of the first to third objects are displayed in the script display area ( 230) is shown.

제4 오브젝트의 생성을 위해 사용자는 타이틀 입력창(212)에 제4 오브젝트의 제목을 입력하고, 키 입력창(214)에서 "xpath" 선택 및 패스워드 입력창을 의미하는 키 값을 입력하고, 동작 지정 입력창(215)에서는 "sendkeys"를 선택하고 "Send_text"란에 패스워드를 입력한다. 그 후 '추가' 버튼(219)을 클릭하여 제4 오브젝트를 작업 스크립트에 추가한다. To create the fourth object, the user inputs the title of the fourth object in the title input window 212 , selects “xpath” in the key input window 214 and inputs a key value indicating a password input window, and operates In the designation input window 215 , “sendkeys” is selected and a password is entered in the “Send_text” field. Thereafter, the fourth object is added to the job script by clicking the 'add' button 219.

도5(e)는 작업노드(10)가 로그인 페이지의 '로그인' 버튼(도6(b)의 323)을 클릭하는 동작을 정의하는 오브젝트("제5 오브젝트")를 생성하는 화면이다. 이 때 앞서 생성된 제1 내지 제4 오브젝트(221a, 221b, 221c, 221d)의 아이콘들이 오브젝트 표시 영역(220)에 표시되고 제1 내지 제4 오브젝트의 스크립트(231a, 231b, 231c, 231d)가 스크립트 표시 영역(230)에 표시된다. FIG. 5(e) is a screen for creating an object (“fifth object”) defining an operation in which the work node 10 clicks a 'login' button (323 in FIG. 6(b)) of a login page. At this time, the icons of the previously generated first to fourth objects 221a, 221b, 221c, and 221d are displayed on the object display area 220, and the scripts 231a, 231b, 231c, and 231d of the first to fourth objects are displayed. It is displayed in the script display area 230 .

제5 오브젝트의 생성을 위해 사용자는 타이틀 입력창(212)에 제5 오브젝트의 제목을 입력하고, 키 입력창(214)에서 "xpath" 선택 및 로그인 버튼을 의미하는 키 값을 입력하고, 동작 지정 입력창(215)에서는 "click"을 선택한다. To create the fifth object, the user inputs the title of the fifth object in the title input window 212 , selects “xpath” in the key input window 214 and inputs a key value that means a login button, and specifies an operation In the input window 215, “click” is selected.

그 후 '추가' 버튼(219)을 클릭하여 제5 오브젝트를 작업 스크립트에 추가하면 도5(f)와 같은 사용자 인터페이스(UI) 화면이 표시될 수 있다. 즉 도5(f)에 도시한 바와 같이 지금까지 작성한 제1 내지 제5 오브젝트(221a, 221b, 221c, 221d, 221e)의 아이콘들이 오브젝트 표시 영역(220)에 표시되고 제1 내지 제5 오브젝트의 스크립트(231a, 231b, 231c, 231d, 231e)가 스크립트 표시 영역(230)에 표시된다. After that, if the fifth object is added to the job script by clicking the 'add' button 219, a user interface (UI) screen as shown in FIG. 5(f) may be displayed. That is, as shown in FIG. 5(f) , the icons of the first to fifth objects 221a, 221b, 221c, 221d, and 221e created so far are displayed on the object display area 220, and the icons of the first to fifth objects are displayed. The scripts 231a, 231b, 231c, 231d, and 231e are displayed in the script display area 230 .

또한 도면에 도시하지 않았지만 제5 오브젝트의 그 다음 작업, 예컨대 로그인한 웹페이지에서 특정 데이터를 스크래핑하여 가져오는 동작을 정의하는 오브젝트, 로그아웃하는 동작을 정의하는 오브젝트,… 등을 순차적으로 더 생성할 수 있으며, 이와 같이 필요에 따라 작업노드(10)가 수행하는 개별 동작을 정의하는 각각의 오브젝트를 생성하여 이어 붙임으로써 타겟 사이트에 대한 스크래핑 작업을 위한 전체 작업 스크립트를 완성할 수 있음을 이해할 것이다. In addition, although not shown in the drawing, an object defining an operation of scraping and retrieving specific data from the next operation of the fifth object, for example, a logged-in web page, an object defining an operation of logging out, ... etc. can be further created sequentially, and in this way, as necessary, each object defining the individual operation performed by the work node 10 is created and connected, thereby completing the entire work script for the scraping work on the target site. you will understand that you can

한편 본 발명의 일 실시예에서 스크립트 생성 모듈(200)은 오브젝트 표시 영역(220)에서 각 오브젝트의 아이콘을 클릭 앤 드래그 방식으로 움직여서 스크립트를 수정할 수 있다. 예를 들어 사용자는 오브젝트 표시 영역(220)에서 제4 오브젝트의 아이콘을 클릭한 후 제5 오브젝트의 아이콘 아래로 드래그하면 제4 오브젝트와 제5 오브젝트의 배열 순서를 변경할 수 있다. 또한 이 때 오브젝트 표시 영역(220)의 각 오브젝트의 아이콘과 스크립트 표시 영역(230)의 각 오브젝트에 해당하는 스크립트(이하 “오브젝트 스크립트”라고도 함)를 서로 대응시켜서 스크립트 표시 영역(230)에서도 오브젝트 스크립트 단위로 위치가 변경될 수 있도록 구성한다. Meanwhile, in an embodiment of the present invention, the script generating module 200 may modify the script by clicking and dragging the icon of each object in the object display area 220 . For example, if the user clicks the icon of the fourth object in the object display area 220 and drags it under the icon of the fifth object, the arrangement order of the fourth object and the fifth object may be changed. In addition, at this time, the icon of each object in the object display area 220 and the script corresponding to each object in the script display area 230 (hereinafter also referred to as “object script”) are made to correspond to each other so that the script display area 230 also displays the object script. It is configured so that the position can be changed in units.

이 구성에 따르면, 오브젝트 표시 영역(220)에서 임의의 두 오브젝트의 순서를 변경하면 그에 대응하여 스크립트 표시 영역(230)에서 각각 대응하는 오브젝트 스크립트의 순서도 변경되어 표시된다. 그러므로 본 발명에 따르면 스크립트 작성에 익숙하지 않은 일반인이나 초보 개발자인 경우에도 스크립트를 쉽고 간편하게 작성하고 오브젝트 단위로 수정하거나 순서를 변경하는 등 각종 편집을 쉽고 간편하게 할 수 있다. According to this configuration, when the order of two arbitrary objects in the object display area 220 is changed, the order of the corresponding object scripts is also changed and displayed in the script display area 230 in response thereto. Therefore, according to the present invention, even an ordinary person or a novice developer unfamiliar with script writing can easily and conveniently create a script and perform various edits, such as modifying or changing the order in units of objects, easily and conveniently.

한편 도시한 실시예에서는 오브젝트(221)를 나타내는 아이콘을 사각형 박스 형태로 표시하고 아이콘들을 화면상에서 세로로 배열하였지만 이는 예시적인 것이며, 아이콘의 형상이나 화면상 배열은 발명의 구체적 실시 형태에 따라 달라질 수 있음은 물론이다. Meanwhile, in the illustrated embodiment, the icons representing the object 221 are displayed in the form of a rectangular box and the icons are arranged vertically on the screen, but this is an example, and the shape or arrangement of the icons on the screen may vary depending on the specific embodiment of the invention. of course there is

다시 도3을 참조하면, 상술한 바와 같은 작업 스크립트를 생성하면(S10), 그 후 관리노드(110)에서 작업 스케줄을 생성할 수 있다(S20). 작업 스케줄은 웹 스크래핑의 대상이 되는 타겟 사이트 및 웹 스크래핑의 실행 일정을 지정하는 정보를 포함할 수 있다. Referring back to FIG. 3 , if the above-described work script is generated ( S10 ), then the management node 110 may create a work schedule ( S20 ). The job schedule may include information specifying a target site to be subjected to web scraping and an execution schedule of web scraping.

일 실시예에서 작업 스케줄은 작업관리 모듈(111)에서 생성되거나 관리자 단말(40)에서 생성될 수 있다. 또한 작업 스케줄은 스크립트 생성 모듈(200)에서 생성될 수도 있고 이와는 별도의 작업 스케줄 생성 프로그램에 의해 생성될 수도 있다. In an embodiment, the job schedule may be generated by the job management module 111 or generated by the manager terminal 40 . In addition, the job schedule may be generated by the script generating module 200 or may be generated by a separate job schedule generating program.

작업 스케줄 생성을 위해 작업 스케줄 생성 프로그램(또는 스크립트 생성 모듈(200))은 도8에 도시한 것과 같은 관리 템플릿을 제공할 수 있다. 도8은 작업 스케줄 생성 프로그램(400)의 예시적인 사용자 인터페이스(UI) 화면으로서, 관리 템플릿은 스케줄 이름 입력창(401), 주기 단위 입력창(402), 주기 간격 입력창(403), Input 데이터 입력창(404) 등의 입력창을 제공할 수 있다. 관리자는 주기 단위 입력창(402) 및 주기 간격 입력창(403)을 통해 타겟 사이트에 대한 웹 스크래핑 동작을 얼마만큼의 시간 간격으로 실행할 것인지 설정할 수 있다. In order to generate the work schedule, the work schedule generating program (or the script generating module 200 ) may provide a management template as shown in FIG. 8 . 8 is an exemplary user interface (UI) screen of the work schedule generating program 400, and the management template includes a schedule name input window 401, a cycle unit input window 402, a cycle interval input window 403, and input data. An input window such as an input window 404 may be provided. The administrator may set how many time intervals the web scraping operation for the target site is to be executed through the cycle unit input window 402 and the cycle interval input window 403 .

Input 데이터 입력창(404)은 반복되는 유사한 스크래핑 작업을 정의하는 스크립트를 작성해야 할 경우 기작성된 작업 스크립트의 내용을 그대로 가져오고 일부 변수만 변경하여 사용할 수 있도록 하는 입력창이다. 예를 들어 도시한 실시예에서 입력창(404)의 "base"항목에는 예컨대 도5에서 설명한 방법으로 작성한 작업 스크립트(231)를 그대로 입력하고 "dates"항목에는 변경되는 변수를 입력한다. The input data input window 404 is an input window for importing the contents of the pre-written work script as it is and changing only some variables so that it can be used when it is necessary to write a script defining a similar scraping operation that is repeated. For example, in the illustrated embodiment, the work script 231 prepared by the method described in FIG. 5 is inputted to the "base" item of the input window 404 as it is, and a changed variable is inputted to the "dates" item.

도9는 이와 같이 Input 데이터 입력창(404)에 데이터가 입력된 경우의 작업 스크립트(231)와 작업 스케줄 스크립트(410)의 관계를 도식적으로 나타내었다. 도9에서 작업 스크립트(231)는 예컨대 도5를 참조하여 설명한 방식대로 스크립트 생성 모듈(200)을 이용하여 생성한 스크립트일 수 있다. 작업 스케줄 스크립트(410)는 예컨대 도8의 작업 스케줄 생성 프로그램(400)의 사용자 인터페이스(UI) 화면에서 관리 템플릿(401 내지 404)에 내용을 입력하여 JSON 형식으로 생성한 것으로, 작업 스케줄 스크립트(410)는 동적 데이터(410a) 및 스케줄 데이터(410b)를 포함할 수 있다. 동적 데이터(410a)는 도8의 Input 데이터 입력창(404)에 입력한 데이터로서, 예컨대 "base"항목에 작업 스크립트(231)가 그대로 입력되어 있고 "dates"항목에는 반복되는 웹 스크래핑 동작마다 변하는 변수가 입력되어 있다. 예를 들어 인천-상하이 노선의 선박 스케줄을 스크래핑하기 위한 작업 스크립트(231)를 생성한 경우 이 스크립트(231)를 상하이-인천, 인천-홍콩, 홍콩-인천 등 다양한 노선의 선박 스케줄의 스크래핑 작업에 재사용할 수 있는데, 이 때 작업 스크립트의 대부분은 변경할 필요가 없고 상하이-인천, 인천-홍콩, 홍콩-인천 등 노선에 관한 사항만 변경하여 스크립트를 생성할 수 있다. 따라서 동적 데이터(410a)의 "base"항목에는 예컨대 인천-상하이 노선에 대해 기작성한 작업 스크립트(231)를 그대로 입력하고 상하이-인천, 인천-홍콩, 홍콩-인천 등 나머지 노선에 대한 변수를 "dates"항목에 입력할 수 있다.9 schematically shows the relationship between the job script 231 and the job schedule script 410 when data is input to the input data input window 404 as described above. In FIG. 9 , the job script 231 may be, for example, a script generated using the script generating module 200 in the manner described with reference to FIG. 5 . The job schedule script 410 is generated in JSON format by inputting contents into the administrative templates 401 to 404 on the user interface (UI) screen of the job schedule generating program 400 of FIG. 8, for example, and the job schedule script 410 ) may include dynamic data 410a and schedule data 410b. The dynamic data 410a is data input to the input data input window 404 of FIG. 8, for example, the work script 231 is inputted as it is in the "base" item, and the "dates" item is changed for each repeated web scraping operation. A variable has been entered. For example, if a job script 231 for scraping ship schedules on the Incheon-Shanghai route is created, this script 231 is used for scraping ship schedules of various routes such as Shanghai-Incheon, Incheon-Hong Kong, Hong Kong-Incheon, etc. It can be reused. At this time, most of the work scripts do not need to be changed, and only the routes such as Shanghai-Incheon, Incheon-Hong Kong, and Hong Kong-Incheon can be changed to generate scripts. Therefore, in the "base" item of the dynamic data 410a, for example, the pre-written work script 231 for the Incheon-Shanghai route is input as it is, and the variables for the remaining routes such as Shanghai-Incheon, Incheon-Hong Kong, Hong Kong-Incheon are "dates" "You can type in the item.

한편 스케줄 데이터(410b)는 예컨대 도8의 사용자 인터페이스(UI) 화면에서 주기 단위 입력창(402) 및 주기 간격 입력창(403)을 통해 입력된 스케줄 정보를 포함할 수 있다. Meanwhile, the schedule data 410b may include, for example, schedule information input through the period unit input window 402 and the period interval input window 403 on the user interface (UI) screen of FIG. 8 .

다시 도3을 참조하면, 상술한 바와 같이 단계(S20)에서 작업 스케줄을 생성하면, 그 후 작업관리 모듈(111)은 각 작업노드(10)에게 전달할 잡(job)을 생성하고(S30), 생성된 잡(job)을 각 작엄노드(10)에 전달하여 스크래핑 동작을 지시한다(S50). 여기서 잡(job)은 하나의 작업노드(10)가 특정 타겟 사이트에 대해 수행할 스크래핑 작업을 의미할 수 있다. Referring back to FIG. 3 , if a job schedule is created in step S20 as described above, then the job management module 111 generates a job to be delivered to each job node 10 ( S30 ), The generated job (job) is transmitted to each job node 10 to instruct the scraping operation (S50). Here, a job may mean a scraping job to be performed by one job node 10 for a specific target site.

일 실시예에서 작업관리 모듈(111)은 각 작업노드(10)의 현재 상태에 따라 어느 작업노드(10)에 스크래핑 작업을 부여할지 선택하고 선택된 작업노드(10)에 대해 각각 다른 잡(job)을 전달한다. 예를 들어 노드관리 모듈(112)은 각 작업노드(10)로부터 작업노드(10)의 메모리 사용량, 프로세서(CPU) 사용량, 및 저장장치 사용량을 모니터링하고(S40) 이 모니터링 결과에 기초하여 스크래핑 작업을 수행할 작업노드(10)를 선택할 수 있다. In one embodiment, the job management module 111 selects which job node 10 to give the scraping job according to the current state of each job node 10, and selects a different job for the selected job node 10. to convey For example, the node management module 112 monitors the memory usage, the processor (CPU) usage, and the storage device usage of the working node 10 from each working node 10 (S40), and based on the monitoring result, a scraping operation You can select the work node 10 to perform.

관리노드(110)로부터 잡(job)을 수신한 각각의 작업노드(10)는 각각 자신에게 할당된 타겟 사이트(20)를 웹 스크래핑하고(S60) 스크래핑 결과물, 즉 각 타겟 사이트에서 추출한 디지털 콘텐츠를 관리노드(110)로 전송한다. 관리노드(110)는 각 작업노드(10)로부터 디지털 콘텐츠를 수신하고 이를 DB 노드(120)에 저장하고(S80), 필요에 따라 콘텐츠를 가공하고 표준화하여 웹서버를 통해 사용자에게 제공할 수 있다. Each job node 10 that has received a job from the management node 110 web scrapes the target site 20 assigned to it, respectively (S60), and scrapes the result, that is, digital content extracted from each target site. It is transmitted to the management node (110). The management node 110 may receive digital content from each work node 10 and store it in the DB node 120 (S80), process and standardize the content as necessary, and provide it to the user through a web server. .

이상과 같이 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 명세서의 기재로부터 다양한 수정 및 변형이 가능함을 이해할 수 있다. 그러므로 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니되며 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다. As described above, those of ordinary skill in the art to which the present invention pertains can understand that various modifications and variations are possible from the description of this specification. Therefore, the scope of the present invention should not be limited to the described embodiments and should be defined by the claims described below as well as the claims and equivalents.

10: 작업노드 20: 타겟 사이트
30: 통신 네트워크 40: 관리자 단말
50: 사용자 단말
100: 웹 스크래핑 시스템
200: 스크립트 생성 모듈
10: work node 20: target site
30: communication network 40: manager terminal
50: user terminal
100: web scraping system
200: script generation module

Claims (7)

웹 스크래핑 시스템을 이용한 웹 스크래핑 방법으로서,
통신망을 통해 연결된 하나 이상의 웹 스크래퍼가 타겟 사이트의 디지털 콘텐츠를 스크래핑하도록 하는 명령어를 포함하는 작업 스크립트를 생성하는 단계;
웹 스크래핑의 대상이 되는 타겟 사이트 및 웹 스크래핑의 실행 일정을 지정하는 작업 스케줄을 생성하는 단계;
상기 작업 스케줄에 따라 각 웹 스크래퍼에 전달할 작업(job)을 생성하는 단계; 및
각 웹 스크래퍼의 작업 상태에 기초하여 각 웹 스크래퍼에게 상기 작업(job)을 전달하는 단계;를 포함하고,
상기 웹 스크래핑 시스템은 작업 템플릿 영역(210), 오브젝트 표시 영역(220), 및 스크립트 표시 영역(230)을 포함하는 사용자 인터페이스(UI)를 제공하는 스크립트 생성 모듈(200)을 포함하며,
작업 템플릿 영역(210)은 가상 브라우저 방식의 웹 스크래핑을 위한 작업 스크립트 작성을 위해, 작업 스크립트의 오브젝트 단위로 입력할 항목을 미리 정의된 템플릿 형식으로 제공하고 템플릿의 각 항목을 통해 사용자 입력을 수신하는 영역이고,
오브젝트 표시 영역(220)은 사용자에 의해 생성된 하나 이상의 오브젝트를 각각 나타내는 아이콘을 오브젝트 생성 순서대로 표시하는 영역이고,
스크립트 표시 영역(230)은 현재까지 작성된 작업 스크립트를 표시하는 영역이며,
오브젝트 표시 영역(220)에 표시되는 제1 오브젝트의 아이콘과 제2 오브젝트의 아이콘의 순서를 변경함으로써, 스크립트 표시 영역(230)에 표시되는 제1 오브젝트의 스크립트와 제2 오브젝트의 스크립트의 순서를 변경할 수 있도록 구성된 것을 특징으로 하는, 웹 스크래핑 시스템을 이용한 웹 스크래핑 방법.
As a web scraping method using a web scraping system,
generating a work script including instructions for causing one or more web scrapers connected through a communication network to scrape digital content of a target site;
generating a job schedule specifying a target site to be subjected to web scraping and an execution schedule of web scraping;
generating a job to be delivered to each web scraper according to the job schedule; and
and delivering the job to each web scraper based on the job status of each web scraper.
The web scraping system includes a script generation module 200 that provides a user interface (UI) including a work template area 210 , an object display area 220 , and a script display area 230 ,
The work template area 210 provides items to be input in units of objects of the work script in a predefined template format in order to create a work script for web scraping in a virtual browser method, and receives user input through each item of the template. is the area,
The object display area 220 is an area that displays icons representing one or more objects created by the user in the order of object creation,
The script display area 230 is an area for displaying the work scripts created so far,
By changing the order of the icon of the first object and the icon of the second object displayed in the object display area 220 , the order of the script of the first object and the script of the second object displayed in the script display area 230 is changed. A web scraping method using a web scraping system, characterized in that it is configured to be able to.
제 1 항에 있어서,
각 웹 스크래퍼로부터 각 웹 스크래퍼가 스크래핑한 디지털 콘텐츠를 수신하는 단계; 및
수신한 디지털 콘텐츠를 데이터베이스에 저장하는 단계;를 더 포함하는 것을 특징으로 하는, 웹 스크래핑 시스템을 이용한 웹 스크래핑 방법.
The method of claim 1,
receiving digital content scraped by each web scraper from each web scraper; and
Storing the received digital content in a database; Web scraping method using a web scraping system, characterized in that it further comprises.
제 1 항에 있어서,
각각의 웹 스크래퍼는, 유선 또는 무선으로 상기 웹 스크래핑 시스템과 통신 가능하도록 연결되고 상기 웹 스크래핑 시스템으로부터 수신한 작업(job)에 따라 웹 스크래핑 동작을 실행하는 독립된 컴퓨터 장치인 것을 특징으로 하는, 웹 스크래핑 시스템을 이용한 웹 스크래핑 방법.
The method of claim 1,
Each web scraper is an independent computer device that is communicatively connected to the web scraping system by wire or wirelessly and executes a web scraping operation according to a job received from the web scraping system. Web scraping method using the system.
제 1 항에 있어서,
각 웹 스크래퍼에게 상기 작업(job)을 전달하는 단계 전에, 각각의 웹 스크래퍼의 메모리 사용량, 프로세서 사용량, 및 저장장치 사용량에 기초하여, 상기 작업(job)을 전달할 웹 스크래퍼를 선택하는 단계를 더 포함하는 것을 특징으로 하는, 웹 스크래핑 시스템을 이용한 웹 스크래핑 방법.
The method of claim 1,
Prior to the step of delivering the job to each web scraper, based on the memory usage, processor usage, and storage usage of each web scraper, further comprising the step of selecting a web scraper to which the job is to be delivered A web scraping method using a web scraping system, characterized in that.
제 1 항에 있어서,
상기 웹 스크래핑 시스템이, 사용자 인터페이스(UI)를 통해 사용자에게 입력 템플릿을 제공하고 상기 입력 템플릿으로 수신한 사용자 입력에 따라 상기 작업 스크립트를 생성할 수 있는 스크립트 생성 모듈을 포함하는 것을 특징으로 하는, 웹 스크래핑 시스템을 이용한 웹 스크래핑 방법.
The method of claim 1,
The web scraping system provides an input template to the user through a user interface (UI) and includes a script generation module capable of generating the job script according to the user input received as the input template, the web Web scraping method using scraping system.
제 1 항에 있어서,
상기 웹 스크래핑 시스템은 유선 또는 무선으로 상기 웹 스크래핑 시스템과 통신 가능하도록 연결된 관리자 단말을 더 포함하고,
상기 스크립트 생성 모듈이 상기 관리자 단말에 설치된 것을 특징으로 하는, 웹 스크래핑 시스템을 이용한 웹 스크래핑 방법.
The method of claim 1,
The web scraping system further comprises a manager terminal connected to communicate with the web scraping system by wire or wirelessly,
A web scraping method using a web scraping system, characterized in that the script generation module is installed in the administrator terminal.
제1항 내지 제6항 중 어느 한 항에 따른 웹 스크래핑 방법을 실행시키기 위한 컴퓨터 프로그램이 기록된 컴퓨터 판독가능 기록매체.
A computer-readable recording medium in which a computer program for executing the web scraping method according to any one of claims 1 to 6 is recorded.
KR1020210153095A 2021-11-09 2021-11-09 Web scraping method and system using method of making web scraping script KR102436357B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210153095A KR102436357B1 (en) 2021-11-09 2021-11-09 Web scraping method and system using method of making web scraping script

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210153095A KR102436357B1 (en) 2021-11-09 2021-11-09 Web scraping method and system using method of making web scraping script

Publications (1)

Publication Number Publication Date
KR102436357B1 true KR102436357B1 (en) 2022-08-25

Family

ID=83111227

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210153095A KR102436357B1 (en) 2021-11-09 2021-11-09 Web scraping method and system using method of making web scraping script

Country Status (1)

Country Link
KR (1) KR102436357B1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170101624A (en) * 2016-02-29 2017-09-06 (주)엠더블유스토리 System for monitoring digital contents and method for processing thereof
KR101982085B1 (en) 2018-04-25 2019-05-27 주식회사쿠콘 System, method and computer program for data scrapping using script engine
KR20210117039A (en) 2020-03-18 2021-09-28 주식회사 엑스트라이버 System and method for providing tour itinerary

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170101624A (en) * 2016-02-29 2017-09-06 (주)엠더블유스토리 System for monitoring digital contents and method for processing thereof
KR101982085B1 (en) 2018-04-25 2019-05-27 주식회사쿠콘 System, method and computer program for data scrapping using script engine
KR20210117039A (en) 2020-03-18 2021-09-28 주식회사 엑스트라이버 System and method for providing tour itinerary

Similar Documents

Publication Publication Date Title
US11803704B2 (en) Intelligently updating a collaboration site or template
CN108304201B (en) Object updating method, device and equipment
US20210034336A1 (en) Executing a process-based software application in a first computing environment and a second computing environment
US20150012330A1 (en) Work management method
US20120221933A1 (en) Method and system to build interactive documents
US20200374185A1 (en) Iteratively updating a collaboration site or template
US11327724B2 (en) System and method that support application software development
US8549422B2 (en) Graphical approach to setup data sharing between two controllers
US20240028991A1 (en) Flexible Work Breakdown Structure
US20090248740A1 (en) Database form and report creation and reuse
CN108475267A (en) System and method for executable content and executable content stream distribution
Vasyliuk et al. Construction Features of the Industrial Environment Control System.
US8713152B2 (en) Managing distributed applications using structural diagrams
JP5444166B2 (en) Equipment management device, screen display method, and program
KR102436357B1 (en) Web scraping method and system using method of making web scraping script
US11314530B2 (en) User-based extension setting devices, methods, and programs
CN110968311A (en) Front-end page construction method and device and electronic equipment
US20140040785A1 (en) Browser-based process flow control responsive to an external application
JP2023084805A (en) Data complementary system, data complementary device, complementary processing selection method, and program
CN114090002A (en) Front-end interface construction method and device, electronic equipment and storage medium
CN115390720A (en) Robotic Process Automation (RPA) including automatic document scrolling
US9787552B2 (en) Operation process creation program, operation process creation method, and information processing device
JP2009258981A (en) Project management device, project management method, project management program, and recording medium
Verma Developing your first extensions
KR102644170B1 (en) Method for assisting select of screen components and collect of coordinate information

Legal Events

Date Code Title Description
GRNT Written decision to grant