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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
Abstract
Description
본 발명은 웹 스크래핑 방법 및 시스템에 관한 것으로, 보다 상세하게는, 웹 스크래핑 작업을 위한 스크립트를 생성하는 방법 및 이렇게 생성된 스크립트를 이용하여 웹 스크래핑을 수행하도록 하는 웹 스크래핑 시스템에 관한 것이다. 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.
본 발명은 상기 문제점을 해결하기 위한 것으로, 다수의 타겟 사이트에 흩어져 있는 정보를 스크래핑하여 하나의 통합된 웹서버에서 제공할 수 있도록 하는 웹 스크래핑 방법 및 시스템을 제공하는 것을 목적으로 한다. 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
웹 스크래핑 시스템(100)은 각 웹 스크래퍼(10)가 수행할 스크래핑 작업을 정의하는 명령어(스크립트)를 생성하고 관리하며 스케줄에 따라 웹 스크래퍼(10)에게 잡(job)(일반적인 의미의 '작업'과 구별하기 위해 본 명세서에서 '잡'(job)이라고 표현하지만 명세서에서 '잡' 또는 '작업'으로 혼용하기도 함)을 전달하는 역할을 한다. The
웹 스크래퍼(10)는 스크래핑할 대상이 되는 웹 사이트(이하 “타겟 사이트”라고 함)(20)에 접속하여 각 타겟 사이트(20)에서 디지털 컨텐츠를 스크래핑하는 장치이다. 각각의 웹 스크래퍼(10)는 클라우드 환경에서 서로 독립된 컴퓨터 장치일 수 있다. 즉 각각의 웹 스크래퍼(10)는 웹 스크래핑 시스템(100) 및 다른 웹 스크래퍼(10)에 대해 물리적으로 및/또는 논리적으로 독립적인 프로세서(CPU), 메모리, 저장장치(예컨대 HDD 또는 SSD), 및 운영체제(OS)를 구비하고 그에 기반하여 동작하는 독립적인 컴퓨터 장치일 수 있고 유선 및/또는 무선 통신 네트워크(30)를 통해 웹 스크래핑 시스템(100) 및 타겟 사이트(20)와 통신 가능하도록 연결될 수 있다. The
각각의 웹 스크래퍼(10)는 웹 스크래핑 시스템(100)으로부터 수신한 잡(job)에 따라 웹 스크래핑 동작을 실행하고, 타겟 사이트(20)로부터 스크래핑한 디지털 콘텐츠를 웹 스크래핑 시스템(100)으로 전송할 수 있다. Each
한편 본 명세서에서 "웹 스크래핑 시스템"은 협의의 의미에서 도1의 웹 스크래핑 시스템(100)만을 지칭할 수도 있지만 광의의 의미에서 웹 스크래퍼(10)를 포함하는 의미로 사용되기도 하며, 또는 더 넓은 의미로 웹 스크래퍼(10)와 관리자 단말(도2의 40)을 포함하는 의미로 사용될 수도 있다. Meanwhile, in this specification, the term "web scraping system" may refer to only the
웹 스크래핑 시스템(100)은 웹 스크래퍼(10)로부터 수신한 스크래핑 결과물, 즉 디지털 콘텐츠를 데이터베이스에 저장할 수 있고, 디지털 콘텐츠를 필요에 따라 가공하거나 표준화하여 웹서버를 통해 사용자에게 제공할 수 있다. 예를 들어 스크래핑 대상이 되는 타겟 사이트(20)가 컨테이너 선박을 소유하고 있는 선사들의 사이트이고 각 선사 사이트에서 웹 스크래퍼(10)가 선박 스케줄을 스크래핑하는 경우를 가정하면, 각 웹 스크래퍼(10)는 특정 선사 사이트에 대한 스크래핑 작업을 정의하는 잡(job)을 웹 스크래핑 시스템(100)으로부터 수신하고 이에 따라 각 선사 사이트에 액세스하여 해당 선사의 선박 스케줄을 스크래핑한 후 웹 스크래핑 시스템(100)에 전송한다. 웹 스크래핑 시스템(100)은 모든 웹 스크래퍼(10)로부터 수신한 선박 스케줄을 가공하거나 표준화하여 웹서버를 통해 하나의 통합된 선박 예매 사이트에서 선박 스케줄을 제공하고 예약을 받을 수 있다. The
한편 도1에서 웹 스크래퍼(10) 및 타겟 사이트(20)로서 각각 3개의 웹 스크래퍼(11,12,13)와 3개의 타겟 사이트(21,22,23)를 도시하였지만 이 개수는 예시적인 것이며, 본 발명의 실제 구현시에는 2개 이상의 임의의 복수개의 웹 스크래퍼(10)를 이용하여 복수개의 타겟 사이트(20)에 대한 스크래핑을 수행함을 이해할 것이다. On the other hand, as the
또한 도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
도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
작업노드(10)는 하나 이상의 웹 스크래퍼(11,12,13)를 포함하며, 이하에서 각각의 웹 스크래퍼(11,12,13)을 각각 작업노드라고 칭하기로 한다. 각각의 작업노드(10)(즉, 각각의 웹 스크래퍼(11,12,13))는 도1을 참조하여 설명한 웹 스크래퍼(10)와 동일 또는 유사한 구성과 기능을 가진다. 각 작업노드(10)는 서로 독립된 컴퓨터 장치일 수 있고 통신 네트워크(30)를 통해 웹 스크래핑 시스템(100)과 통신한다. 각 작업노드(10)는 웹 스크래핑 시스템(100)으로부터 잡(job)을 수신하고 그에 따라 각 타겟 사이트(20)에 대한 스크래핑 동작을 수행한 후 스크래핑 결과물(스크래핑한 디지털 콘텐츠)을 웹 스크래핑 시스템(100)으로 전송할 수 있다. The
웹 스크래핑 시스템(100)의 관리노드(110)는 웹 스크래핑 시스템(100)의 동작을 전반적으로 관리하고 제어하는 역할을 한다. 도시한 실시예에서 관리노드(110)는 작업관리 모듈(111), 노드관리 모듈(112), 및 스크립트 관리 모듈(113)을 포함한다. The
작업관리 모듈(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
일 실시예에서 시스템 관리자가 작업 스케줄 생성 프로그램을 통해 작업 스케줄을 작성하여 작업관리 모듈(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
노드관리 모듈(112)은 작업노드(10)를 관리하는 기능부이다. 노드관리 모듈(112)은 각각의 작업노드(10), 즉 각각의 웹 스크래퍼(11,12,13)의 상태를 모니터링하고 각 작업노드(10)에게 스크래핑을 위한 잡(job)을 전달할 수 있다. 예를 들어, 노드관리 모듈(112)은 각 작업노드(10)의 전원의 온/오프 상태를 확인하고 각 작업노드(10)의 비정상적인 동작이나 오류가 발생하는지 여부를 모니터링 할 수 있다. 또한 노드관리 모듈(112)은 각 작업노드(10)의 자원들의 사용 현황, 예컨대 메모리 사용량, 프로세서(CPU) 사용량, 및 저장장치(HDD 또는 SSD 등) 사용량을 모니터링 할 수 있고, 이러한 모니터링 결과에 기초하여 현재 사용가능한 작업노드(10)에 잡(job)을 전달하여 스크래핑 작업을 부여할 수 있다. The
스크립트 관리 모듈(113)은 스크래핑을 수행하기 위해 각 작업노드(10)에 전달하는 작업 스크립트를 생성하고 관리하는 기능부이다. 작업 스크립트는 스크래핑 동작을 정의하는 알고리즘을 포함한다. 각 타겟 사이트(20)마다 데이터를 정의하고 배열하는 방식이 상이하므로 각 타겟 사이트(20)마다 이에 대응하는 작업 스크립트가 각기 상이할 수 있다. The
본 발명의 일 실시예에서는 관리자가 각 타겟 사이트(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
데이터베이스(DB) 노드(120)는 웹 스크래핑에 대한 각종 데이터를 저장하는 데이터베이스(DB)를 포함한다. 예를 들어 DB노드(120)의 DB는 작업관리 모듈(111)이 관리하는 작업 스케줄, 및 스크립트 관리 모듈(113) 또는 스크립트 생성 모듈(200)에서 생성된 작업 스크립트를 저장할 수 있다. 또한 DB 노드(120)의 DB는 각 작업노드(10)로부터 수신한 스크래핑 결과물, 즉 각 타겟 사이트로부터 스크래핑한 디지털 콘텐츠를 저장할 수 있다. Database (DB)
서비스 노드(130)는 타겟 사이트로부터 수집하고 DB 노드(120)의 DB에 저장된 디지털 콘텐츠를 가공하거나 표준화하고 이를 일반 사용자에게 제공하는 기능부이다. 일 실시예에서 서비스 노드(130)는 DB 노드(120)로부터 데이터를 불러와서 사용자에게 제공하는 웹서버를 포함할 수 있다. 예를 들어 본 발명의 웹 스크래핑 시스템(100)이 선사 사이트로부터 선박 스케줄을 스크래핑하는 것에 사용되는 경우, 서비스 노드(130)는 각 선사 사이트로부터 수집한 선박 스케줄을 웹서버를 통해 제공하고, 일반 사용자(즉, 선박을 예약하고자 하는 사용자)는 사용자 단말(50)을 통해 해당 웹 서버에 접속하여 선박 스케줄 조회, 화물운송 예약 등의 서비스를 이용할 수 있다. The
관리자 단말(40)은 유선 또는 무선 통신망을 통해 웹 스크래핑 시스템(100)과 통신 가능하도록 연결될 수 있고 웹 스크래핑 시스템(100)의 관리자가 웹 스크래핑 시스템(100)을 관리할 수 있도록 사용자 인터페이스를 제공하는 컴퓨터 장치이다. 예를 들어 관리자 단말(40)은 데스크탑 컴퓨터, 노트북 컴퓨터, 태블릿, 휴대폰 등 임의의 컴퓨터 장치일 수 있다. 일 실시예에서 관리자 단말(40)에 스크립트 생성 모듈(200)이 설치될 수 있고 관리자가 이를 이용하여 웹 스크래핑을 위한 스크립트를 작성할 수 있다. 또한 일 실시예에서 관리자 단말(40)에 작업 스케줄 생성 프로그램이 설치될 수도 있으며, 관리자가 이를 이용하여 웹 스크래핑을 위한 작업 스케줄을 작성할 수도 있다. The
도3은 일 실시예에 따라 웹 스크래핑을 위해 웹 스크래핑 시스템(100)의 관리노드(110)와 작업노드(10)간 동작 관계를 설명하기 위한 도면이다. 3 is a diagram for explaining the operational relationship between the
도3을 참조하면, 우선 단계(S10)에서, 관리노드(110)에서 작업 스크립트를 생성하고 저장한다. 예를 들어 관리자가 관리노드(110) 또는 관리자 단말(40)에 설치된 스크립트 생성 모듈(200)을 이용하여 작업 스크립트를 생성할 수 있다. 이 때 '작업 스크립트'는 각 작업노드(10)(즉, 각각의 웹 스크래퍼(11,12,13))가 타겟 사이트(20)의 디지털 콘텐츠를 스크래핑 하도록 하는 명령어를 포함하는 데이터일 수 있다. Referring to FIG. 3 , first, in step S10 , the
일 실시예에서 작업 스크립트는 각 작업노드(10)로 하여금 가상 브라우저 방식으로 웹 스크래핑을 하도록 하는 명령어로 구성된다. 이 때 '가상 브라우저' 방식은 실제로 사람이 웹 브라우저를 이용하여 특정 타겟 사이트에 접속하여 데이터를 스크래핑하는 것과 유사한 방식으로 동작하는 것을 의미한다. 예를 들어 사람이 타겟 사이트의 메인 페이지에 접속하여 로그인을 하고 스크래핑 할 웹페이지에 액세스하여 스크래핑을 하는 것처럼, 각 작업노드(10)가 메인 페이지, 로그인 페이지, 스크래핑할 콘텐츠가 있는 웹페이지 등으로 단계적으로 접속한 후 스크래핑 하도록 작업 스크립트가 작성된다. In one embodiment, the job script is composed of commands that cause each
또한 본 발명의 일 실시예에서 스크립트 생성 모듈(200)은 관리자가 작업 스크립트를 편리하게 작성할 수 있도록 템플릿을 제공하는 사용자 인터페이스(UI)를 구비한다. 이와 관련하여 템플릿을 제공하는 예시적인 스크립트 생성 모듈(200)에 대해 도4 내지 도6을 참조하여 설명하기로 한다. In addition, in an embodiment of the present invention, the
도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
작업 템플릿 영역(210)은 사용자가 작업 스크립트의 작성을 편리하게 할 수 있도록 스크립트에 입력되는 항목을 미리 템플릿 형식으로 제공하고 사용자가 각 입력창에 데이터를 기입할 수 있는 영역이다. The
오브젝트 표시 영역(220)은, 작업 템플릿 영역(210)에서 사용자가 입력창에 데이터를 입력하여 한 단위의 '오브젝트'를 생성하였을 때 이렇게 생성된 한 단위의 오브젝트(221)를 하나의 사각형 박스의 아이콘으로 표시하여 사용자가 쉽고 직관적으로 알아볼 수 있도록 하는 영역이다. 여기서 '오브젝트'는 가상 브라우저 방식의 스크래핑 작업을 위해 작업노드(10)가 타겟 사이트에 액세스하여 순차적으로 해야 할 각 단계의 작업을 정의하는 명령어 집합 단위이다. In the
예를 들어, 가상 브라우저 방식에서 작업노드(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
이러한 방식으로 예컨대 하나의 타겟 사이트에 대해 메인 웹페이지에 접속하는 단계부터 스크래핑을 완료하는 단계에 이르기까지 각 단계에 대응하는 오브젝트를 순차적으로 작성하여 해당 타겟 사이트에 대한 웹 스크래핑을 수행하는 전체 작업 스크립트를 완성할 수 있으며, 이 때 작업 템플릿 영역(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
스크립트 표시 영역(230)은 사용자가 현재까지 작성한 작업 스크립트(231)를 보여주는 영역이다. 즉, 오브젝트 표시 영역(220)은 사용자가 작성한 작업 스크립트를 간단한 박스 형태로 표시하는 것이고 스크립트 표시 영역(230)은 작업 스크립트(231)를 특정 프로그래밍 언어나 문자열 형식에 따라 보여주는 영역일 수 있다. 도시한 실시예에서 작업 스크립트(231)를 JSON 형식의 문자열 데이터로 작성 및 표시하였다. 그러나 이는 예시적인 것이며 구체적 실시 형태에 따라 작업 스크립트를 JSON이 아닌 다른 스크립트 작성 언어나 문자열 형식으로 표시할 수 있음은 물론이다. The
한편 도시한 실시예에서 작업 템플릿 영역(210)은 템플릿명 입력창(211), 타이틀 입력창(212), URL 입력창(213), 키 입력창(214), 동작 지정 입력창(215), 시간설정 입력창(216), 리턴 키 입력창(217), 스크립트 실행 입력창(218) 등의 입력창을 포함할 수 있다. Meanwhile, in the illustrated embodiment, the
템플릿명 입력창(211)은 타겟 사이트의 목록이나 종류를 선택하는 입력창이다. 예를 들어 본 발명의 웹 스크래핑 시스템(100)으로 선사 사이트를 스크래핑할 경우, 각 선사 사이트의 목록이 미리 입력되어 있을 수 있고 입력창을 클릭하여 목록을 펼친 후 특정 선사를 선택할 수 있다. The template
타이틀 입력창(212)는 작성자가 현재 작성하는 오브젝트의 제목을 입력하는 창이며, 사용자가 임의의 명칭으로 오브젝트 제목을 입력할 수 있다. The
URL 입력창(213)은 타겟 사이트의 웹페이지 주소를 입력하는 창이며, 키 입력창(214)은 예컨대 웹페이지에 표시되는 '로그인', '확인' 등과 같은 특정 버튼을 지정하는 키를 입력하는 창이다. The
동작 지정 입력창(215)은 현재 웹페이지에서 작업노드(10)가 어떤 동작을 수행해야 할지를 지정하는 입력창이다. 일 실시예에서 동작 지정 입력창(215)은 감추기/펼치기 방식으로 표시되고 사용자가 마우스 포인터로 입력창(215)을 클릭하면 예컨대 도7에 도시한 것과 같은 다양한 동작의 리스트(215a)가 표시될 수 있다. 예를 들어, 도7의 동작 리스트(215a)에서 'click'은 웹페이지에서 키 입력창(214)에 의해 지정된 특정 버튼을 클릭하는 동작이고, 'moveClick'은 예컨대 마우스 포인트를 움직이면서 클릭하는 동작이다. 'sendkeys'는 'Send_text' 항목에 입력된 밸류값을 전송하는 동작이다. 이 때 'Send_text'는 예컨대 웹페이지에서 아이디나 패스워드 입력창 또는 검색창에 넣을 문자열을 입력하는 창이다. 'getText'는 텍스트를 가지고 오는 동작으로서, 실제 스크래핑 동작을 수행할 경우 이 동작을 선택한다. 그리고 'iframe'은 페이지 안에 페이지를 넣는 iframe 태그를 사용한 경우 해당 프레임의 내용을 인식하는 동작이고, 'window' 및 'close'는 윈도우(창) 객체 자체를 가지고 오거나 닫는 동작이고 'alert'는 알림 창을 팝업하는 동작일 수 있다. The operation
시간설정 입력창(216)은 작업노드(10)가 타겟 사이트 내에서 특정 작업을 순차적으로 수행할 때 지연 시간을 설정할 수 있는 입력창이다. 일반적으로 웹 페이지를 제공하는 웹서버 환경이나 네트워크 환경에 따라 예컨대 클릭 동작에 의해 한 웹페이지에서 다음 웹페이지로 전환하는데 시간이 소요되는 경우가 있다. 예를 들어 로그인 화면에서 아이디와 패스워드를 입력 후 클릭하면 소정 시간 대기한 후 로그인 화면으로 넘어가는 경우이다. 이러한 동작을 작업노드(10)가 가상 브라우저 방식으로 웹페이지에 액세스할 때 일정 시간 기다리지 않고 곧바로 다음 단계의 작업을 실행하도록 프로그래밍할 경우 스크래핑 작업이 정상적으로 수행되지 못할 수도 있다. 따라서 시간설정 입력창(216)을 통해 의도적인 지연 시간을 설정함으로써, 하나의 작업에서 다음 작업으로 전환할 때 지연 시간 이후 전환하도록 하여 스크래핑 작업을 정상적으로 수행할 수 있도록 보장할 수 있다. The time setting
리턴 키 입력창(217)은 리턴될 결과 밸류에 대한 키를 입력하는 창으로, 예를 들어 스크래핑 결과로서 수신한 데이터가 웹페이지의 어느 키에 해당하는 값인지를 설정할 수 있다. The return
스크립트 실행 입력창(218)은 사용자의 필요에 따라 웹페이지 내에서 또 다른 연산이나 프로그램을 실행할 때 해당 연산이나 프로그램의 실행을 위한 명령어나 알고리즘을 입력하는 창이다. 예를 들어 어느 특정 웹페이지에 접속한 상태에서 해당 웹페이지에 표시된 밸류 값들을 변수로 하여 특정 연산(예컨대 더하기나 곱하기 등의 연산)을 수행하고 이 연산의 결과값을 스크래핑해야 하는 경우가 있을 수 있다. 이 경우 해당 연산을 정의하는 스크립트를 스크립트 실행 입력창(218)에서 작성하여 작업 스크립트(231)에 포함시킬 수 있다. The script
이상과 같이 사용자는 상술한 작업 템플릿 영역(210)의 각 입력창에 소정 내용을 기입하고 최종적으로 추가 버튼(219)을 클릭하여 하나의 오브젝트(221)를 생성하고 이 오브젝트(221)가 오브젝트 표시 영역(220)에 사각형 박스의 아이콘으로 표시되고 이 오브젝트(221)의 실제적인 작업 스크립트 내용이 JSON 형식으로 스크립트 표시 영역(230)에 표시됨을 이해할 것이다. As described above, the user writes predetermined content in each input window of the above-described
이제 도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
우선, 사용자가 실제로 웹 브라우저를 통해 타겟 사이트에 접속하는 경우를 도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
사용자는 로그인 페이지의 아이디 입력창(321)과 비밀번호 입력창(322)에 각각 아이디와 비밀번호를 입력하고 '로그인' 버튼(323)을 클릭하고, 이에 의해 예컨대 도6(c)와 같이 로그인된 웹페이지 화면이 표시될 수 있다. 또한 이 웹페이지에는 예컨대 우측 상단에 '로그아웃' 버튼(330)이 표시될 수도 있다. The user inputs an ID and password in the
이제 이러한 동작을 작업노드(10)가 실행하도록 작업 스크립트를 작성하는 과정을 도5를 참조하여 설명한다. 도5(a)는 작업노드(10)가 타겟 사이트의 메인 페이지(홈페이지)에 접속하는 동작을 정의하는 오브젝트(이하 "제1 오브젝트"라 함)를 생성하는 화면이다. 사용자는 타이틀 입력창(212)에 제1 오브젝트의 제목을 입력하고 URL 입력창(213)에 타겟 사이트의 홈페이지 주소를 입력한다. 그 후 '추가' 버튼(219)을 클릭하여 제1 오브젝트를 작업 스크립트에 추가한다. Now, a process of creating a job script so that the
도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
제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
도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
제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
도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
제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
도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
제5 오브젝트의 생성을 위해 사용자는 타이틀 입력창(212)에 제5 오브젝트의 제목을 입력하고, 키 입력창(214)에서 "xpath" 선택 및 로그인 버튼을 의미하는 키 값을 입력하고, 동작 지정 입력창(215)에서는 "click"을 선택한다. To create the fifth object, the user inputs the title of the fifth object in the
그 후 '추가' 버튼(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'
또한 도면에 도시하지 않았지만 제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
한편 본 발명의 일 실시예에서 스크립트 생성 모듈(200)은 오브젝트 표시 영역(220)에서 각 오브젝트의 아이콘을 클릭 앤 드래그 방식으로 움직여서 스크립트를 수정할 수 있다. 예를 들어 사용자는 오브젝트 표시 영역(220)에서 제4 오브젝트의 아이콘을 클릭한 후 제5 오브젝트의 아이콘 아래로 드래그하면 제4 오브젝트와 제5 오브젝트의 배열 순서를 변경할 수 있다. 또한 이 때 오브젝트 표시 영역(220)의 각 오브젝트의 아이콘과 스크립트 표시 영역(230)의 각 오브젝트에 해당하는 스크립트(이하 “오브젝트 스크립트”라고도 함)를 서로 대응시켜서 스크립트 표시 영역(230)에서도 오브젝트 스크립트 단위로 위치가 변경될 수 있도록 구성한다. Meanwhile, in an embodiment of the present invention, the
이 구성에 따르면, 오브젝트 표시 영역(220)에서 임의의 두 오브젝트의 순서를 변경하면 그에 대응하여 스크립트 표시 영역(230)에서 각각 대응하는 오브젝트 스크립트의 순서도 변경되어 표시된다. 그러므로 본 발명에 따르면 스크립트 작성에 익숙하지 않은 일반인이나 초보 개발자인 경우에도 스크립트를 쉽고 간편하게 작성하고 오브젝트 단위로 수정하거나 순서를 변경하는 등 각종 편집을 쉽고 간편하게 할 수 있다. According to this configuration, when the order of two arbitrary objects in the
한편 도시한 실시예에서는 오브젝트(221)를 나타내는 아이콘을 사각형 박스 형태로 표시하고 아이콘들을 화면상에서 세로로 배열하였지만 이는 예시적인 것이며, 아이콘의 형상이나 화면상 배열은 발명의 구체적 실시 형태에 따라 달라질 수 있음은 물론이다. Meanwhile, in the illustrated embodiment, the icons representing the
다시 도3을 참조하면, 상술한 바와 같은 작업 스크립트를 생성하면(S10), 그 후 관리노드(110)에서 작업 스케줄을 생성할 수 있다(S20). 작업 스케줄은 웹 스크래핑의 대상이 되는 타겟 사이트 및 웹 스크래핑의 실행 일정을 지정하는 정보를 포함할 수 있다. Referring back to FIG. 3 , if the above-described work script is generated ( S10 ), then the
일 실시예에서 작업 스케줄은 작업관리 모듈(111)에서 생성되거나 관리자 단말(40)에서 생성될 수 있다. 또한 작업 스케줄은 스크립트 생성 모듈(200)에서 생성될 수도 있고 이와는 별도의 작업 스케줄 생성 프로그램에 의해 생성될 수도 있다. In an embodiment, the job schedule may be generated by the job management module 111 or generated by the
작업 스케줄 생성을 위해 작업 스케줄 생성 프로그램(또는 스크립트 생성 모듈(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
Input 데이터 입력창(404)은 반복되는 유사한 스크래핑 작업을 정의하는 스크립트를 작성해야 할 경우 기작성된 작업 스크립트의 내용을 그대로 가져오고 일부 변수만 변경하여 사용할 수 있도록 하는 입력창이다. 예를 들어 도시한 실시예에서 입력창(404)의 "base"항목에는 예컨대 도5에서 설명한 방법으로 작성한 작업 스크립트(231)를 그대로 입력하고 "dates"항목에는 변경되는 변수를 입력한다. The input
도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
한편 스케줄 데이터(410b)는 예컨대 도8의 사용자 인터페이스(UI) 화면에서 주기 단위 입력창(402) 및 주기 간격 입력창(403)을 통해 입력된 스케줄 정보를 포함할 수 있다. Meanwhile, the
다시 도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
일 실시예에서 작업관리 모듈(111)은 각 작업노드(10)의 현재 상태에 따라 어느 작업노드(10)에 스크래핑 작업을 부여할지 선택하고 선택된 작업노드(10)에 대해 각각 다른 잡(job)을 전달한다. 예를 들어 노드관리 모듈(112)은 각 작업노드(10)로부터 작업노드(10)의 메모리 사용량, 프로세서(CPU) 사용량, 및 저장장치 사용량을 모니터링하고(S40) 이 모니터링 결과에 기초하여 스크래핑 작업을 수행할 작업노드(10)를 선택할 수 있다. In one embodiment, the job management module 111 selects which
관리노드(110)로부터 잡(job)을 수신한 각각의 작업노드(10)는 각각 자신에게 할당된 타겟 사이트(20)를 웹 스크래핑하고(S60) 스크래핑 결과물, 즉 각 타겟 사이트에서 추출한 디지털 콘텐츠를 관리노드(110)로 전송한다. 관리노드(110)는 각 작업노드(10)로부터 디지털 콘텐츠를 수신하고 이를 DB 노드(120)에 저장하고(S80), 필요에 따라 콘텐츠를 가공하고 표준화하여 웹서버를 통해 사용자에게 제공할 수 있다. Each
이상과 같이 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 명세서의 기재로부터 다양한 수정 및 변형이 가능함을 이해할 수 있다. 그러므로 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니되며 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다. 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.
각 웹 스크래퍼로부터 각 웹 스크래퍼가 스크래핑한 디지털 콘텐츠를 수신하는 단계; 및
수신한 디지털 콘텐츠를 데이터베이스에 저장하는 단계;를 더 포함하는 것을 특징으로 하는, 웹 스크래핑 시스템을 이용한 웹 스크래핑 방법. 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.
각각의 웹 스크래퍼는, 유선 또는 무선으로 상기 웹 스크래핑 시스템과 통신 가능하도록 연결되고 상기 웹 스크래핑 시스템으로부터 수신한 작업(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.
각 웹 스크래퍼에게 상기 작업(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.
상기 웹 스크래핑 시스템이, 사용자 인터페이스(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.
상기 웹 스크래핑 시스템은 유선 또는 무선으로 상기 웹 스크래핑 시스템과 통신 가능하도록 연결된 관리자 단말을 더 포함하고,
상기 스크립트 생성 모듈이 상기 관리자 단말에 설치된 것을 특징으로 하는, 웹 스크래핑 시스템을 이용한 웹 스크래핑 방법. 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.
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.
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)
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 |
-
2021
- 2021-11-09 KR KR1020210153095A patent/KR102436357B1/en active IP Right Grant
Patent Citations (3)
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 |