KR101717063B1 - 웹 크롤링 장치 및 이에 의한 웹 크롤링 방법 - Google Patents

웹 크롤링 장치 및 이에 의한 웹 크롤링 방법 Download PDF

Info

Publication number
KR101717063B1
KR101717063B1 KR1020150190216A KR20150190216A KR101717063B1 KR 101717063 B1 KR101717063 B1 KR 101717063B1 KR 1020150190216 A KR1020150190216 A KR 1020150190216A KR 20150190216 A KR20150190216 A KR 20150190216A KR 101717063 B1 KR101717063 B1 KR 101717063B1
Authority
KR
South Korea
Prior art keywords
group
crawling
tickets
urls
tree structure
Prior art date
Application number
KR1020150190216A
Other languages
English (en)
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 KR1020150190216A priority Critical patent/KR101717063B1/ko
Application granted granted Critical
Publication of KR101717063B1 publication Critical patent/KR101717063B1/ko

Links

Images

Classifications

    • G06F17/30864
    • G06F17/30625
    • G06F17/30705
    • G06F17/30961

Landscapes

  • Information Transfer Between Computers (AREA)

Abstract

호스트에서 수집된 URL들을 분석하여, 수집된 URL들을 분류하기 위한 적어도 하나의 그룹을 결정하는 단계; 소정의 크롤링(crawling) 기간 동안 적어도 하나의 그룹 각각에 대해 크롤링할 수 있는 티켓 수를 할당하는 단계; 및 할당된 티켓 수에 따라, 적어도 하나의 그룹 각각에 포함된 URL을 크롤링하는 단계를 포함하는 것을 특징으로 하는 본 발명의 일 실시예에 따른 웹 크롤링 장치에 의한 웹 크롤링 방법이 개시된다.

Description

웹 크롤링 장치 및 이에 의한 웹 크롤링 방법{WEB CRAWLING APPARATUS AND METHOD}
본 발명은 웹 검색 분야에 관한 것이다. 보다 구체적으로, 본 발명은 웹 검색의 기반이 되는 웹 크롤링 장치 및 이에 의한 웹 크롤링 방법에 관한 것이다.
네트워크의 속도가 빨라지고, 스마트폰 등의 모바일 단말이 발달됨에 따라 사용자들은 언제 어디서나 다양한 종류의 단말을 통해 포털 사이트에 접속하여 자신이 원하는 정보를 획득하고 있다. 예를 들어, 포털 사이트 업체들은 사용자의 검색 요청에 따라 날씨, 사전, 공연, 여행, 영화 등의 다양한 정보를 제공하고 있다.
포털 사이트를 운영하는 포털 서버의 입장에서는, 사용자 단말에게 다양한 정보를 제공하기 위해 여러 문서들을 수집 및 갱신시켜야 할 필요성이 존재한다. 사용자에게 정보를 제공하기 위해 문서들을 수집하는 프로세스를 웹 크롤링(web crawling)이라 한다.
웹 크롤링 방법을 구현하는데 있어, 웹 호스트, 사용자 및 포털 서버 모두의 이익을 고려하여야 하는데, 일 예로서, 사용자에게 얼마나 정확한 정보를 신속하게 제공할 수 있는지를 고려할 수 있다. 즉, 웹 검색 시스템의 발전과 함께 효율적인 웹 크롤링 방안이 요구된다.
본 발명의 일 실시예에 따른 웹 크롤링 장치 및 이에 의한 웹 크롤링 방법은 크롤링에 따라 웹 호스트에 가해지는 부하를 감소시키는 것을 목적으로 한다.
또한, 본 발명의 일 실시예에 따른 웹 크롤링 장치 및 이에 의한 웹 크롤링 방법은 중요도가 높은 URL들에 대응하는 웹 페이지들이 우선적으로 크롤링되도록 하는 것을 목적으로 한다.
또한, 본 발명의 일 실시예에 따른 웹 크롤링 장치 및 이에 의한 웹 크롤링 방법은 웹 크롤링 장치 및 웹 호스트의 네트워크 자원을 효율적으로 이용하는 것을 목적으로 한다.
본 발명의 일 실시예에 따른 웹 크롤링 방법은,
호스트에서 수집된 URL들을 분석하여, 상기 수집된 URL들을 분류하기 위한 적어도 하나의 그룹을 결정하는 단계; 소정의 크롤링(crawling) 기간 동안 상기 적어도 하나의 그룹 각각에 대해 크롤링할 수 있는 티켓 수를 할당하는 단계; 및 상기 할당된 티켓 수에 따라, 상기 적어도 하나의 그룹 각각에 포함된 URL에 대응하는 웹 페이지를 크롤링하는 단계를 포함할 수 있다.
상기 URL들은, 이전의 크롤링 기간 동안 수집될 수 있다.
상기 적어도 하나의 그룹을 결정하는 단계는, 상기 수집된 URL들 각각의 단위 텍스트들을 계층별로 분류하여, 단위 텍스트들을 노드로 하는 트리 구조를 생성하는 단계; 동일 계층에 속하는 복수의 노드들 중 두 개 이상의 노드들을 하나의 노드로 병합하여 트리 구조를 간략화하는 단계; 및 상기 간략화된 트리 구조로부터 재구성된 URL을, 상기 수집된 URL들을 분류하기 위한 적어도 하나의 그룹으로 결정하는 단계를 포함할 수 있다.
상기 트리 구조를 생성하는 단계는, 상기 수집된 URL 각각을 단위 텍스트들로 분할하는 단계; 및 상기 분할된 단위 텍스트들을 계층에 따라 상기 트리 구조의 노드로 포함시키는 단계; 및 상기 트리 구조의 각 계층 별로 단위 텍스트들 각각의 빈도수를 계산하는 단계를 포함할 수 있다.
상기 트리 구조를 간략화하는 단계는, 상기 트리 구조의 어느 한 계층에 포함된 복수의 노드들 중 빈도수가 기 설정된 횟수 이하인 노드들을 하나의 노드로 병합하는 단계를 포함할 수 있다.
상기 트리 구조를 간략화하는 단계는, 하나의 노드로 병합되는 두 개 이상의 노드들의 단위 텍스트가 동일하지 않은 경우, 상기 병합되어 생성되는 하나의 노드의 대응하는 단위 텍스트를 와일드카드(wild card)화하는 단계를 포함할 수 있다.
상기 트리 구조를 간략화하는 단계는, 상기 트리 구조의 어느 한 계층에 포함된 복수의 노드들 중 빈도수가 기 설정된 횟수 이하이면서, 속성이 동일한 노드들만을 하나의 노드로 병합할 수 있다.
상기 트리 구조를 간략화하는 단계는, 상기 병합이 완료된 후, 상기 어느 한 계층에 포함된 노드들 중 빈도수가 기 설정된 횟수 이하인 노드들은 트리 구조에서 제거하여 기타 그룹으로 분류하는 단계를 포함할 수 있다.
상기 트리 구조를 간략화하는 단계는, 상기 트리 구조의 어느 한 계층에 포함된 복수의 노드들 중 서로 동일한 하위 노드의 개수가 소정 개수 이상인 노드들을 하나의 노드로 병합하는 단계를 포함할 수 있다.
상기 티켓 수를 할당하는 단계는, 상기 적어도 하나의 그룹 각각에 대해 할당되는 티켓 수의 총합이 상기 호스트에 대해 할당되는 전체 티켓 수를 초과하지 않도록 상기 적어도 하나의 그룹 각각에 티켓 수를 할당할 수 있다.
상기 티켓 수를 할당하는 단계는, 상기 수집된 URL들 중 제 1 그룹으로 구분되는 제 1 URL들의 개수에, 상기 제 1 URL들에 대한 사용자의 선택 기대치 및 상기 제 1 URL들의 소스(source) URL들의 타겟 스코어 중 적어도 하나를 고려한 가중치를 적용하여, 상기 제 1 그룹에 대한 티켓 수를 결정할 수 있다.
상기 티켓 수를 할당하는 단계는, 상기 제 1 그룹에 대한 티켓 수를, 상기 제 1 그룹에 대한 최대 티켓 수 및 최소 티켓 수와 비교하여, 상기 제 1 그룹에 대한 최종 티켓 수를 결정하는 단계를 포함할 수 있다.
상기 웹 크롤링 방법은, 상기 소정의 크롤링 기간과 상기 호스트에 대해 설정된 전체 티켓 수에 기초하여, 상기 호스트에 대한 크롤링 허용 주기를 결정하는 단계를 더 포함할 수 있다.
상기 크롤링하는 단계는, 상기 호스트의 각 그룹에 대해 크롤링을 하는 경우, 상기 호스트에 대한 크롤링 간격이 상기 크롤링 허용 주기 이상 차이가 나도록 제어하는 단계를 포함할 수 있다.
상기 웹 크롤링 방법은, 상기 호스트의 각 그룹에 대해 크롤링을 하는 경우, 상기 각 그룹에 대해 할당된 티켓 수와 상기 소정의 크롤링 기간에 기초하여 산출된 각 그룹별 크롤링 허용 속도를 초과하지 않도록 제어할 수 있다.
본 발명의 다른 실시예에 따른 웹 크롤링 장치는,
호스트에서 수집된 URL들을 분석하여, 상기 수집된 URL들을 분류하기 위한 적어도 하나의 그룹을 결정하고, 소정의 크롤링(crawling) 기간 동안 상기 적어도 하나의 그룹 각각에 대해 크롤링할 수 있는 티켓 수를 할당하는 자원 분배부; 상기 할당된 티켓 수에 따라, 상기 적어도 하나의 그룹 각각에 포함된 URL에 대응하는 웹 페이지를 크롤링하는 크롤러; 및 상기 크롤러의 상기 적어도 하나의 그룹 각각에 대한 크롤링 스케쥴을 제어하는 스케쥴러를 포함할 수 있다.
본 발명의 일 실시예에 따른 웹 크롤링 장치 및 이에 의한 웹 크롤링 방법이 달성할 수 있는 일부의 효과는 다음과 같다.
i) 크롤링 시 웹 호스트에 가해지는 부하를 감소시킬 수 있다.
ii) 중요도가 높은 URL들에 대응하는 웹 페이지들이 우선적으로 크롤링되도록 함으로써, 사용자에게 퀄리티가 높은 정보를 제공할 수 있다.
iii) 웹 호스트 및 웹 크롤링 장치의 네트워크 자원을 효율적으로 사용할 수 있다.
다만, 본 발명의 일 실시예에 따른 웹 크롤링 장치 및 이에 의한 웹 크롤링 방법이 달성할 수 있는 효과는 이상에서 언급한 것들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 웹 크롤링 장치가 적용되는 환경을 도시하는 도면이다.
도 2는 본 발명의 일 실시예에 따른 웹 크롤링 방법을 설명하기 위한 순서도이다.
도 3은 도 2의 S210 단계를 상세하게 설명하기 위한 순서도이다.
도 4a는 URL들을 단위 텍스트로 분할하는 방법을 설명하기 위한 예시적인 도면이고, 도 4b는 도 4a의 URL들에 기초하여 생성된 트리 구조를 나타내는 예시적인 도면이다. 도 4c는 URL들의 분석을 통해 생성된 트리 구조를 나타내는 예시적인 도면이고, 도 4d는 도 4c의 트리 구조로부터 간략화된 트리 구조를 나타내는 예시적인 도면이다.
도 5a는 호스트 및 그룹별로 할당되는 티켓 수를 나타내는 예시적인 도면이고, 도 5b는 소정 크롤링 기간 동안에 설정되는 타임 윈도우를 나타내는 예시적인 도면이다.
도 6은 본 발명의 다른 실시예에 따른 웹 크롤링 장치의 구성을 나타내는 블록도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고, 이를 상세한 설명을 통해 상세히 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명은 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 발명을 설명함에 있어서, 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 본 명세서의 설명 과정에서 이용되는 숫자(예를 들어, 제 1, 제 2 등)는 하나의 구성요소를 다른 구성요소와 구분하기 위한 식별기호에 불과하다.
또한, 본 명세서에서, 일 구성요소가 다른 구성요소와 "연결된다" 거나 "접속된다" 등으로 언급된 때에는, 상기 일 구성요소가 상기 다른 구성요소와 직접 연결되거나 또는 직접 접속될 수도 있지만, 특별히 반대되는 기재가 존재하지 않는 이상, 중간에 또 다른 구성요소를 매개하여 연결되거나 또는 접속될 수도 있다고 이해되어야 할 것이다.
또한, 본 명세서에서 '~부(유닛)', '모듈' 등으로 표현되는 구성요소는 소프트웨어, FPGA 또는 ASIC과 같은 하드웨어 구성요소를 의미하며, 이 구성요소는 어떤 역할들을 수행한다. 그렇지만, 구성 요소는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. 구성요소는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있다. 또한, 2개 이상의 구성요소가 하나의 구성요소로 합쳐지거나 또는 하나의 구성요소가 보다 세분화된 기능별로 2개 이상으로 분화될 수도 있다. 또한, 이하에서 설명할 구성요소 각각은 자신이 담당하는 주기능 이외에도 다른 구성요소가 담당하는 기능 중 일부 또는 전부의 기능을 추가적으로 수행할 수도 있으며, 구성요소 각각이 담당하는 주기능 중 일부 기능이 다른 구성요소에 의해 전담되어 수행될 수도 있음은 물론이다.
이하에서는, 도면을 참조하여 본 발명의 기술적 사상에 따른 예시적인 실시예들에 대해 설명한다.
도 1은 본 발명의 일 실시예에 따른 웹 크롤링 장치(100)가 적용되는 환경을 도시하는 도면이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 웹 크롤링 장치(100)는 네트워크(10)를 통해 적어도 하나의 웹 호스트(또는, 이하 '호스트'로도 참조한다)(200)들과 연결될 수 있다. 웹 크롤링 장치(100)는 적어도 하나의 웹 호스트(200)들이 보유하고 있는 URL(universal resource locator 또는 uniform resource locator)에 접속하여, 접속한 URL에 대응하는 웹 페이지를 크롤링한다. 적어도 하나의 웹 호스트(200)들 각각은 웹 서버일 수 있으며, 적어도 하나의 웹 호스트(200)는 여러 웹 페이지들을 저장하고 있다. 웹 호스트(200)들이 보유한 웹 페이지들은 갱신되거나 추가 생성되기 때문에 웹 크롤링 장치(100)는 주기적으로 크롤링을 수행해야 한다.
도 1에 도시된 네트워크(10)는 유선 네트워크와 무선 네트워크를 포함할 수 있으며, 구체적으로, 근거리 네트워크(LAN: Local Area Network), 도시권 네트워크(MAN: Metropolitan Area Network), 광역 네트워크(WAN: Wide Area Network) 등 다양한 네트워크를 포함할 수 있다. 또한, 네트워크(10)는 공지의 월드 와이드 웹(WWW: World Wide Web)을 포함할 수도 있다. 그러나, 본 발명에 따른 네트워크(10)는 상기 열거된 네트워크에 국한되지 않고, 공지의 무선 데이터 네트워크나 공지의 전화 네트워크, 공지의 유무선 텔레비전 네트워크를 적어도 일부로 포함할 수도 있다.
본 발명의 일 실시예에 따른 웹 크롤링 장치(100)는 포털 서버를 포함할 수도 있다. 이 경우, 웹 크롤링 장치(100)는 사용자 단말(300)의 브라우저(310)로부터의 검색 요청에 대해, 검색 조건에 부합하는 웹 페이지들을 사용자 단말(300)로 제공하고, 웹 페이지들은 사용자 단말(300)의 브라우저(310)를 통해 화면에 표시된다. 사용자 단말(300)은 스마트폰, 테블릿 PC, 노트북, PDA, 데스크탑 컴퓨터 등과 같이 네트워크(10)를 통해 웹 서버에 접속할 수 있는 다양한 종류의 단말을 포함한다.
이하에서는, 도 1에 도시된 웹 크롤링 장치(100)의 웹 크롤링 방법에 대해 도 2를 참조하여 상세하게 설명한다.
도 2는 본 발명의 일 실시예에 따른 웹 크롤링 방법을 설명하기 위한 순서도이다.
S210 단계에서, 웹 크롤링 장치(100)는 호스트(200)에서 수집된 URL들을 분석해 해당 URL들을 적어도 하나의 그룹으로 분류한다. 호스트(200)에서 수집된 URL들은 이전 크롤링 기간 동안 수집된 URL들로서, 금번 크롤링 기간 동안 크롤링의 대상이 되는 URL들을 의미할 수 있다.
S220 단계에서, 웹 크롤링 장치(100)는 소정의 크롤링 기간 동안 적어도 하나의 그룹 각각에 대해 크롤링할 수 있는 티켓 수를 할당한다. 다시 말하면, 웹 크롤링 장치(100)는 각각의 개별 그룹에 대해서 크롤링할 수 있는 티켓 수를 소정의 크롤링 기간 기준으로 할당한다.
본 명세서에서, '티켓 수'란, 웹 크롤링 장치(100)가 웹 페이지를 크롤링하기 위해 해당 웹 페이지를 보유한 호스트(200)로 웹 페이지를 요청할 수 있는 횟수를 의미한다. 예를 들어, 1개의 티켓으로 호스트(200)로부터 1개 또는 미리 결정된 개수의 웹 페이지를 크롤링할 수 있다.
S230 단계에서, 웹 크롤링 장치(100)는 개별 그룹에 할당된 티켓 수에 따라 URL에 대응하는 웹 페이지를 크롤링한다.
본 발명의 일 실시예에 따른 웹 크롤링 방법에서는 하나의 호스트(200), 예를 들어, 'www.example.com'의 호스트 주소를 가지고 있는 호스트(200)에 대한 크롤링 가능 횟수를 결정하는데 있어, 호스트(200)의 그룹별로 결정한다. 이는 호스트(200)의 그룹마다 그 중요도가 상이하기 때문에 더 중요한 그룹에 대해서는 많은 수의 티켓을 할당하고, 덜 중요한 그룹에 대해서는 적은 수의 티켓을 할당하기 위함이다. 이에 따라, 중요도가 높은 URL들에 대응하는 웹 페이지들을 많이 크롤링하여 사용자에게 퀄리티가 높은 웹 페이지들을 제공할 수 있으며, 이와 함께 중요도가 낮은 URL들(ex. 광고 등)의 웹 페이지들이 많이 크롤링되어 사용자에게 퀄리티가 낮은 정보가 제공되는 것이 방지될 수 있다.
이하에서는, 도 3, 도 4a 내지 도 4d를 참조하여, 호스트(200)에서 수집된 URL들에 기초하여 적어도 하나의 그룹을 결정하는 방법에 대해 상세히 설명한다.
도 3은 도 2의 S210 단계를 상세하게 설명하기 위한 순서도이다.
S310 단계에서, 웹 크롤링 장치(100)는 호스트(200)에서 수집된 URL들을 단위 텍스트로 분할한다. 예를 들어, 웹 크롤링 장치(100)는 URL 문법(syntax) 에 따라, 슬래쉬(/), 물음표(?) 등의 특수 문자를 기준으로 URL 구조를 단위 텍스트로 분할할 수 있다.
도 4a는 URL들을 단위 텍스트로 분할하는 방법을 설명하기 위한 예시적인 도면인데, 도 4a에 도시된 URL들(410, 420, 430)은 모두 동일한 호스트로부터 수집된 것이다. 도 4a에 도시된 바와 같이, 'http://www.example.com/path1/path2?key1=val1&key2=val2'라는 URL(410)이 존재하는 경우, www, example, com, path1, path2, key1, key2의 단위 텍스트들로 분할할 수 있다. 여기서, 단위 텍스트들 각각의 속성으로서, www, example, com은 호스트 주소에 해당하고, path1과 path2는 경로, key1과 key2는 쿼리(query)에 해당할 수 있다.
또한, 'http://blog.example.com/path1?key3=val1&key1=val2'라는 URL(420)은 blog, example, com, path1, key3, key1의 단위 텍스트들로 분할되고, 여기서, blog, example, com은 호스트 주소, path1은 경로, key3과 key1은 쿼리에 해당할 수 있다.
마지막으로, 'http://www.example.com/path4?key3=val1'라는 URL(430)은 www, example, com, path4, key3의 단위 텍스트들로 분할되고, www, example, com은 호스트 주소, path4는 경로, key3은 쿼리에 해당할 수 있다.
도 4a의 예시에서 각 URL들(410, 420, 430)의 val 값은 단위 텍스트로 구분되지 않았지만, 구현예에 따라서, val 값도 단위 텍스트로 구분될 수 있다. 예를 들어, 'http://www.example.com/path1/path2?key1=val1&key2=val2'라는 URL(410)은, www, example, com, path1, path2, key1, key2의 단위 텍스트 뿐만 아니라, val1, val2의 단위 텍스트로 더 분할될 수 있는 것이다.
다시 도 3을 보면, S320 단계에서, 웹 크롤링 장치(100)는 URL들로부터 분할된 단위 텍스트들을 계층별로 분류한다. 각 단위 텍스트들의 계층 순서는 URL 구조 규칙에 따라 결정될 수 있고, 또는 관리자에 의해 결정될 수도 있다.
도 4(a)에서, 'http://www.example.com/path1/path2?key1=val1&key2=val2'의 URL(410)에서 분할된 단위 텍스트들은 순서대로 com, example, www, path1, path2, key1, key2의 계층을 가질 수 있고, 'http://blog.example.com/path1?key3=val1&key1=val2'의 URL(420)에서 분할된 단위 텍스트들은 순서대로 com, example, blog, path1, key3, key1의 계층을 가질 수 있다. 또한, 'http://www.example.com/path4?key3=val1'의 URL(430)에서 분할된 단위 텍스트들은 순서대로 com, example, www, path4, key3의 계층을 가질 수 있다.
즉, 호스트 주소에 해당하는 단위 텍스트들은, 동일한 호스트(200) 내에서 각 단위 텍스트가 지정하는 범위 또는 의미하는 범위가 큰 순서대로 계층이 결정되며, 경로와 쿼리에 해당하는 단위 텍스트들은 URL에 기재된 순서대로 계층이 결정될 수 있다.
S330 단계에서, 웹 크롤링 장치(100)는 S320 단계에서 분류된 계층에 따라 단위 텍스트들을 트리 구조의 노드에 포함시키고, S340 단계에서, 트리 구조의 계층 별로 단위 텍스트들 각각의 빈도수를 계산한다.
도 4b는 도 4a의 URL들에 기초하여 생성된 트리 구조를 나타내는 예시적인 도면이다. 도 4b를 참조하면, 최상위 계층의 노드로 배치된 com의 이하로, example, www 등이 포함된 것을 알 수 있다. 여기서, www와 blog는 3번째의 동일 계층에 해당하고, path4, path1, path1은 4번째의 동일 계층에 해당하며, key3, path2, key3은 5번째의 동일 계층에 해당한다. 각각의 URL로부터 분할된 단위 텍스트들을 트리 구조에 포함시킬 때, 중복되는 단위 텍스트에 대해서는 그 빈도수를 증가시킨다. 도 4(b)의 각 노드에서 단위 텍스트 옆의 숫자는 해당하는 단위 텍스트의 빈도수를 의미한다.
다시 도 3을 참조하면, S350 단계에서, 웹 크롤링 장치(100)는 트리 구조를 간략화하기 위해 빈도수가 기 설정된 횟수 이하인 노드들을 병합하고, S360 단계에서, 병합 후 빈도수가 기 설정된 횟수 이하인 노드들을 트리 구조에서 삭제한다. 구현예에 따라서는 S350 단계는 실행되지 않고, S340 단계 이후 S360 단계가 바로 수행될 수도 있다. 기 설정된 횟수는 다양하게 변경될 수 있다.
트리 구조를 간략화하는 이유는, URL들을 일반화시켜 수집된 URL들을 그룹핑하기 위함이다. 트리 구조의 간략화에 대해서는 도 4c 및 도 4d를 참조한다.
도 4c는 하나의 호스트(200)에서 수집된 URL들의 분석을 통해 생성된 트리 구조를 나타내는 예시적인 도면이고, 도 4d는 도 4c의 트리 구조로부터 간략화된 트리 구조를 나타내는 예시적인 도면이다.
관리자에 의해 5가 기 설정된 횟수로 결정되었다면, 도 4c의 트리 구조에서, key1(442), key2(444), path4(452), key4(454), news2(460)가 병합 또는 삭제의 대상이 된다. key1(442)과 key2(444)는 동일한 상위 노드인 path1(440)의 하위 계층에 위치하므로 서로 병합되나, path4(452), key4(454)는 상위 노드가 path2(450)이므로, key1(442)과 key2(444)와는 병합되지 않는다. 또한 key1(442)과 key2(444)는 서로 병합될 때, 서로의 단위 텍스트가 서로 상이하기 때문에 병합된 노드(470)의 단위 텍스트는 와일드카드화가 된다. 따라서, 5번째 계층에 해당하는 쿼리로서 key1이나 key2를 가지는 URL들은 동일 그룹으로 편성될 수 있다. key1(442)과 key2(444)가 병합되면 각각의 빈도수는 합쳐진다.
또한, path4(452)와 key4(454)는 서로 간에 병합의 대상이지만, 그 속성이 경로(path)와 쿼리(query)로서 서로 상이하므로 병합되지 않으며, news(460)는 병합의 대상이 존재하지 않으므로, 다른 노드와 병합되지 않는다.
노드들 간의 병합이 완료된 후에도 그 빈도수가 기 설정된 횟수 이하인 노드들은 트리 구조로부터 삭제된다. 따라서, 도 4c에서 다른 노드와 병합되지 않았던 path4(452), key4(454) 및 new2(460) (그리고, 그 하위 노드들)는 트리 구조로부터 삭제되고, 삭제된 노드의 상위 노드들의 빈도수는 삭제된 노드들의 빈도수만큼 차감된다. 도 4c 및 도 4d를 보면, 최종적으로 com의 빈도수가 30에서 26으로 차감된 것을 확인할 수 있다.
한편, 트리 구조의 각 계층에서 노드들을 병합하는데 있어, 단순히 빈도수뿐만 아니라, 각 계층의 노드들 중 서로 동일한 하위 노드의 개수가 소정 개수 이상인 노드들을 병합할 수도 있다. 예를 들어, 동일한 계층의 A 노드와 B 노드 각각의 빈도수를 봤을 때, 병합의 대상이 되지 않지만, A 노드와 B 노드의 하위 노드들을 참조하였을 때, 단위 텍스트가 서로 동일한 하위 노드의 개수가 많으면 A 노드와 B 노드를 하나의 노드로 병합할 수 있는 것이다.
또한, 트리 구조의 각 계층에서 노드들을 병합하는데 있어, 어느 한 계층에 포함된 노드들 각각이 그룹을 구분하는데 중요한 영향을 미친다면 해당 계층의 노드들을 하나의 노드로 병합하고, 파라미터화하여 트리 구조를 간략화할 수도 있다. 이 때, 해당 계층에 존재하는 노드들 간은 서로 다른 그룹에 해당한다. 예를 들어, 도 4c의 트리 구조에서 news2(460) 노드의 빈도수가 6에 해당한다면, www, blog, news2 노드 각각이 그룹을 구분하는데 중요한 영향을 미치는 것으로 판단하여 이들 노드들을 병합하고 파라미터화할 수 있다.
다시 도 3으로 돌아와서, S370 단계에서, 웹 크롤링 장치(100)는 간략화된 트리 구조로부터 재구성된 URL을 적어도 하나의 그룹으로 결정한다. 웹 크롤링 장치(100)는 최상위 노드의 단위 텍스트로부터 최하위 노드의 단위 텍스트 각각의 경로를 따라 URL을 재구성할 수 있다.
도 4d에서, com, example, www, path1, *로 이루어지는 URL과, com, example, www, path2, path3, key3으로 이루어지는 URL, 그리고, com, example, blog, path5로 이루어지는 URL이 호스트(200)의 그룹으로 결정될 수 있다. 또한, 삭제되었던 노드들에 해당하는 URL은 기타 그룹에 포함될 수 있다.
한편, 적어도 하나의 그룹이 결정되면, 결정된 그룹 각각에 대한 티켓 수가 할당된다고 전술하였는데, 이하에서는 티켓 수의 할당 방법에 대해 설명한다.
이전의 크롤링 기간 동안 여러 호스트(200)들에서 발견된 모든 URL들의 웹 페이지들에 대해 크롤링을 수행한다면, 일부 호스트(200)들에게는 과다한 부하가 가해질 수 있으므로, 각각의 호스트(200)마다 크롤링할 수 있는 총 티켓 수가 결정된다. 호스트(200)별 총 티켓 수는 웹 크롤링 장치(100)의 관리자에 의해 임의로 결정될 수 있고, 또는 각 호스트(200)의 자원 용량을 고려해 호스트(200)별 총 티켓 수를 결정할 수도 있다.
호스트(200)별 총 티켓 수가 결정되었으면, 총 티켓 수를 한도로 하여 각 호스트(200)의 그룹별 티켓 수를 할당하는 과정이 필요하다. 그룹별 티켓 수를 할당하기 위해, 이전 크롤링 기간 동안 수집된 URL들 중 각 그룹에 포함되는 URL의 개수에 기초하여 그룹별 티켓 수를 결정할 수 있다.
예를 들어, A 호스트(200)에 제 1 그룹, 제 2 그룹 및 제 3 그룹이 포함되는 것으로 가정하고, 제 1 그룹에 대한 티켓 수를 할당하는 과정을 중심으로 설명하면, 먼저, 이전 크롤링 기간 동안 수집된 URL들 중 A 호스트(200)의 제 1 그룹에 포함되는 제 1 URL의 개수를 결정한다. 다음으로, 제 1 URL들에 대한 사용자의 선택 기대치, 제 1 URL들의 소스 URL들의 타겟 스코어, 제 1 그룹 내의 스팸 등을 결정하는 내부적 판단 내용 중 적어도 하나를 반영한 가중치를, 제 1 URL의 개수에 적용하여 제 1 그룹에 대한 티켓 수를 결정할 수 있다. 즉, 제 1 그룹에 포함된 웹 페이지의 중요도, 신뢰도, 사용자의 반응성 등을 고려하여 티켓 수를 할당하는 것이다.
여기서, 제 1 URL들에 대한 사용자의 선택 기대치는, 제 1 URL들이 이전에 사용자의 검색 요청에 따라 사용자 단말(300)로 제공되었을 때, 제 1 URL들이 사용자에 의해 클릭 또는 터치되어 선택된 비율 또는 횟수에 해당할 수 있다.
또한, 제 1 URL들의 소스 URL들의 타겟 스코어는, 소스 URL들이 이전에 사용자의 검색 요청에 따라 사용자 단말(300)로 제공되었을 때, 소스 URL들이 사용자에 의해 클릭 또는 터치되어 선택된 비율 또는 횟수를 정규화한 값이며, 소스 URL은 제 1 URL을 링크로 포함하고 있는 URL을 의미한다.
또한, 제 1 그룹 내의 스팸 등을 결정하는 내부적 판단 내용은 웹 크롤링(100)의 운영자의 판단에 따라 결정하거나 미리 설정되는 값이다.
제 1 URL들에 대한 사용자의 선택 기대치 및 제 1 URL들의 소스 URL들의 타겟 스코어가 높을수록 가중치는 높아지며, 그에 따라 제 1 그룹에 대한 티켓 수는 많아질 것이며, 제 1 그룹 내에 스팸 등이 많은 것으로 결정될수록 가중치는 낮아지고, 그에 따라 제 1 그룹에 대한 티켓 수는 감소될 것이다.
구현예에 따라서는, 위의 여러 요인을 반영한 가중치를, 제 1 URL의 개수에 적용하여 제 1 그룹에 대한 후보 티켓 수를 결정한 다음, 후보 티켓 수를 최대 티켓 수 및 최소 티켓 수와 비교하여 제 1 그룹에 대한 최종 티켓 수를 결정할 수도 있다. 이 때, 최소 티켓 수와 최대 티켓 수는 관리자에 의해 결정되거나, 기타, 여러 알고리즘을 통해 결정될 수도 있다.
한편, 호스트 내 각 그룹별로 티켓 수가 할당되더라도, 웹 크롤링 장치(100)가 기 설정된 크롤링 기간의 초기에 모든 티켓을 사용한다면, 나중에 유입되는 중요 URL의 웹 페이지는 크롤링하지 못할 수 있으므로, 사용자에게 중요 정보가 제공되지 못할 수 있다. 또한, 호스트 내 각 그룹별로 동시에 크롤링이 발생한다면, 호스트(200)에 가해지는 부하량이 증가할 수 있다. 이러한 문제점을 해결하기 위해, 본 발명의 일 실시예에 따른 웹 크롤링 방법에서는 타임 윈도우 및 크롤링 허용 주기를 정의한다.
도 5a는 A 호스트(200) 및 A 호스트(200)의 그룹별로 할당되는 티켓 수를 나타내는 예시적인 도면이고, 도 5b는 소정 크롤링 기간 동안에 설정되는 타임 윈도우를 나타내는 예시적인 도면이다.
도 5a를 보면, A 호스트(200)에 대해 2400개의 티켓이 할당되고, A 호스트(200)의 제 1 그룹, 제 2 그룹, 제 3 그룹 및 기타 그룹 각각에는 480개, 960개, 240개 및 720개의 티켓이 할당된다. 제 1 그룹, 제 2 그룹, 제 3 그룹 및 기타 그룹에 대한 티켓 수가 초기에 모두 소진되는 것을 방지하기 위해, 각 그룹에 대한 크롤링 속도가 각 그룹에 대한 크롤링 허용 속도를 초과하지 않도록 제어된다. 각 그룹에 대한 크롤링 허용 속도는 각 그룹에 대해 할당되는 티켓 수와 소정의 크롤링 기간에 기초하여 결정되는데, 소정의 크롤링 기간이 24시간인 경우, A 호스트(200)의 제 1 그룹에 대한 크롤링 허용 속도는 1개/3분(480개/24시간)이고, 제 2 그룹에 대한 크롤링 허용 속도는 1개/1분 30초(960개/24시간)이고, 제 3 그룹에 대한 크롤링 허용 속도는 1개/6분(240개/24시간)이며, 기타 그룹에 대해서는 1개/2분(720개/24시간)이 된다. 즉, A 호스트(200)의 제 1 그룹에 대해서는 3분당 1개의 웹 페이지, 제 2 그룹에 대해서는 1분 30초당 1개의 웹 페이지, 제 3 그룹에 대해서는 6분당 1개의 웹 페이지, 그리고 기타 그룹에 대해서는 2분당 1개의 웹 페이지의 크롤링이 가능하다.
각 그룹에 대한 크롤링 허용 속도는 소정 개수의 웹 페이지를 크롤링하기 위한 타임 윈도우로 설명될 수도 있다. 도 5b에 도시된 바와 같이, 제 1 그룹의 하나의 웹 페이지에 대한 크롤링이 필요한 경우, 도면부호 501로 참조된 3분의 타임 윈도우(501)가 설정되고, 웹 크롤링 장치(100)는 3분의 타임 윈도우(501) 동안 제 1 그룹의 하나의 웹 페이지에 대해 크롤링을 수행한다. 또한, 제 1 그룹의 두 개의 웹 페이지에 대한 크롤링이 필요한 경우, 도면부호 502로 참조된 6분의 타임 윈도우(502)가 설정되고, 웹 크롤링 장치(100)는 6분의 타임 윈도우(502) 동안 제 1 그룹의 두 개의 웹 페이지에 대해 크롤링을 수행한다. 이와 같이, 각 그룹에 대한 크롤링 허용 속도를 설정해 놓음으로써, 특정 그룹에 대한 티켓 수가 조기에 소모되는 것을 방지할 수 있다.
다만, 각 그룹별 크롤링 허용 속도를 설정해 놓았더라도 A 호스트(200)의 제 1 그룹, 제 2 그룹, 제 3 그룹 및 기타 그룹에게 동시에 크롤링 요청이 전송될 경우, A 호스트(200)에게 부하가 가해질 수 있다. 도 5b에서 제 1 그룹에 대한 타임 윈도우(501), 제 2 그룹에 대한 타임 윈도우(503), 제 3 그룹에 대한 타임 윈도우(504) 및 제 4 그룹에 대한 타임 윈도우(505)가 서로 간에 중첩되는 경우, 제 1 그룹, 제 2 그룹, 제 3 그룹 및 제 4 그룹에 대한 크롤링이 동시에 수행될 수 있으며 이에 따라 A 호스트(200)에는 과대한 부하가 가해지는 것이다. 이를 방지하기 위해 웹 크롤링 장치(100)는 소정의 크롤링 기간과 A 호스트(200)에 대해 설정된 총 티켓 수에 기초하여, A 호스트(200)에 대한 크롤링 허용 주기를 결정한다. 예를 들어, A 호스트(200)에 대해 2400개의 티켓이 할당되었고, 소정의 크롤링 기간이 24시간인 경우, A 호스트(200)에 대한 크롤링 허용 주기는 24시간 / 2400개로 결정될 수 있으며, 계산을 하면, 티켓 한 개당 36초의 주기가 계산된다.
웹 크롤링 장치(100)는 A 호스트(200)의 각 그룹에 대해 크롤링을 하는 경우, 전체 호스트(200)에 대한 크롤링 간격이 36초 이상 차이가 나도록 제어함으로써, 하나의 호스트(200)에 대해 동시에 크롤링이 발생하는 것을 차단할 수 있다. 예를 들어, 제 1 그룹에 대한 크롤링이 필요한 경우, 제 2 그룹에 대한 크롤링 시점, 제 3 그룹에 대한 크롤링 시점 및 기타 그룹에 대한 크롤링 시점 중 가장 마지막의 시점으로부터 최소 36초가 경과하여야만 제 1 그룹에 대한 크롤링이 허용되는 것이다.
도 6은 본 발명의 다른 실시예에 따른 웹 크롤링 장치(600)의 구성을 나타내는 블록도이다.
도 6을 참조하면, 본 발명의 다른 실시예에 따른 웹 크롤링 장치(600)는 자원 분배부(610), 스케쥴러(630), 크롤러(650) 및 메모리(670)를 포함할 수 있다. 자원 분배부(610), 스케쥴러(630) 및 크롤러(650)는 적어도 하나의 프로세서로 구현될 수 있으며, 메모리(670)에 저장된 프로그램에 따라 동작할 수 있다.
먼저, 메모리(670)에는 이전의 크롤링 기간 동안 수집된 URL들이 저장된다. 메모리(670)에 저장된 크롤링 대상 URL들을 크롤링 기간마다 갱신할 수 있다.
자원 분배부(610)는 웹 크롤링을 통해 호스트(200)에서 수집된 URL들을 분석하고, URL들을 분류해 그룹을 생성하고, 소정 크롤링 기간 동안의 크롤링 허용 횟수에 대응하는 티켓 수를 상기 생성된 그룹별로 할당한다.
스케쥴러(630)는 크롤러(650)의 크롤링 스케쥴을 제어한다. 구체적으로, 스케쥴러(630)는 호스트(200)의 각 그룹에 대한 크롤링 속도가 각 그룹별 크롤링 허용 속도를 초과하지 않도록 하면서, 호스트(200)에 대한 크롤링 간격이 크롤링 허용 주기 이상 차이가 나도록 제어한다.
크롤러(650)는 자원 분배부(610)에 의해 할당된 그룹별 티켓 수, 호스트(200) 별 크롤링 허용 주기 및 호스트(200)의 각 그룹별 크롤링 허용 속도를 고려하여, 메모리(670)에 저장된 URL들에 대응하는 웹 페이지들을 크롤링한다. 크롤러(650)는 URL에 대응하는 웹 페이지를 다운로드하기 위한 다양한 프로토콜을 사용할 수 있다.
메모리(670)에 저장된 URL들 각각은 크롤링 우선 순위가 설정될 수 있는데, 크롤러(650)는 각 URL의 우선 순위를 고려하여 중요도가 높은 URL의 웹 페이지를 빠르게 크롤링할 수도 있다. URL의 웹 사이트 점수를 계산하고, 계산된 점수에 따라 URL의 우선 순위를 결정하는 방법은 공지되어 있는바, 본 명세서에서는 상세한 설명을 생략한다.
본 발명의 일 실시예에 따른 웹 크롤링 장치 및 이에 의한 웹 크롤링 방법은 크롤링에 따라 웹 호스트에 가해지는 부하를 감소시킬 수 있으며, 중요도가 높은 다수의 URL의 웹 페이지들이 우선적으로 크롤링되도록 함으로써, 사용자에게 퀄리티가 높은 정보를 제공할 수 있다. 또한, 본 발명의 일 실시예에 따른 웹 크롤링 장치 및 이에 의한 웹 크롤링 방법은 웹 호스트 및 웹 크롤링 장치의 네트워크 자원을 효율적으로 사용할 수 있다.
한편, 상술한 본 발명의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 작성된 프로그램은 매체에 저장될 수 있다.
매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 또한, 매체는 단일 또는 수개 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 애플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다.
첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100, 600: 웹 크롤링 장치
200: 웹 호스트
300: 사용자 단말
610: 자원 분배부
630: 스케쥴러
650: 크롤러
670: 메모리

Claims (17)

  1. 호스트에서 수집된 URL들을 분석하여, 상기 수집된 URL들을 분류하기 위한 적어도 하나의 그룹을 결정하는 단계;
    소정의 크롤링(crawling) 기간 동안 상기 적어도 하나의 그룹 각각에 대해 크롤링할 수 있는 티켓 수를 할당하는 단계; 및
    상기 할당된 티켓 수에 따라, 상기 호스트에 접속하여 상기 적어도 하나의 그룹 각각에 포함된 URL에 대응하는 웹 페이지를 크롤링하는 단계를 포함하며,
    상기 적어도 하나의 그룹 각각에 대한 티켓 수는, 상기 적어도 하나의 그룹 각각에 대응하는 웹 페이지를 크롤링하기 위해 해당 웹 페이지를 보유한 호스트로 웹 페이지를 요청할 수 있는 횟수에 대응하는 것을 특징으로 하는 웹 크롤링 장치에 의한 웹 크롤링 방법.
  2. 제1항에 있어서,
    상기 URL들은,
    이전의 크롤링 기간 동안 수집된 것을 특징으로 하는 웹 크롤링 방법.
  3. 제1항에 있어서,
    상기 적어도 하나의 그룹을 결정하는 단계는,
    상기 수집된 URL들 각각의 단위 텍스트들을 계층별로 분류하여, 단위 텍스트들을 노드로 하는 트리 구조를 생성하는 단계;
    동일 계층에 속하는 복수의 노드들 중 두 개 이상의 노드들을 하나의 노드로 병합하여 트리 구조를 간략화하는 단계; 및
    상기 간략화된 트리 구조로부터 재구성된 URL을, 상기 수집된 URL들을 분류하기 위한 적어도 하나의 그룹으로 결정하는 단계를 포함하는 것을 특징으로 하는 웹 크롤링 방법.
  4. 제3항에 있어서,
    상기 트리 구조를 생성하는 단계는,
    상기 수집된 URL 각각을 단위 텍스트들로 분할하는 단계; 및
    상기 분할된 단위 텍스트들을 계층에 따라 상기 트리 구조의 노드로 포함시키는 단계; 및
    상기 트리 구조의 각 계층 별로 단위 텍스트들 각각의 빈도수를 계산하는 단계를 포함하는 것을 특징으로 하는 웹 크롤링 방법.
  5. 제3항에 있어서,
    상기 트리 구조를 간략화하는 단계는,
    상기 트리 구조의 어느 한 계층에 포함된 복수의 노드들 중 빈도수가 기 설정된 횟수 이하인 노드들을 하나의 노드로 병합하는 단계를 포함하는 것을 특징으로 하는 웹 크롤링 방법.
  6. 제3항에 있어서,
    상기 트리 구조를 간략화하는 단계는,
    하나의 노드로 병합되는 두 개 이상의 노드들의 단위 텍스트가 동일하지 않은 경우, 상기 병합되어 생성되는 하나의 노드의 대응하는 단위 텍스트를 와일드카드(wild card)화하는 단계를 포함하는 것을 특징으로 하는 웹 크롤링 방법.
  7. 제3항에 있어서,
    상기 트리 구조를 간략화하는 단계는,
    상기 트리 구조의 어느 한 계층에 포함된 복수의 노드들 중 빈도수가 기 설정된 횟수 이하이면서, 속성이 동일한 노드들만을 하나의 노드로 병합하는 단계를 포함하는 것을 특징으로 하는 웹 크롤링 방법.
  8. 제7항에 있어서,
    상기 트리 구조를 간략화하는 단계는,
    상기 병합이 완료된 후, 상기 어느 한 계층에 포함된 노드들 중 빈도수가 기 설정된 횟수 이하인 노드들은 트리 구조에서 제거하여 기타 그룹으로 분류하는 단계를 포함하는 것을 특징으로 하는 웹 크롤링 방법.
  9. 제3항에 있어서,
    상기 트리 구조를 간략화하는 단계는,
    상기 트리 구조의 어느 한 계층에 포함된 복수의 노드들 중 서로 동일한 하위 노드의 개수가 소정 개수 이상인 노드들을 하나의 노드로 병합하는 단계를 포함하는 것을 특징으로 하는 웹 크롤링 방법.
  10. 제1항에 있어서,
    상기 티켓 수를 할당하는 단계는,
    상기 적어도 하나의 그룹 각각에 대해 할당되는 티켓 수의 총합이 상기 호스트에 대해 할당되는 전체 티켓 수를 초과하지 않도록 상기 적어도 하나의 그룹 각각에 티켓 수를 할당하는 단계를 포함하는 것을 특징으로 하는 웹 크롤링 방법.
  11. 제10항에 있어서,
    상기 티켓 수를 할당하는 단계는,
    상기 수집된 URL들 중 제 1 그룹으로 구분되는 제 1 URL들의 개수에, 상기 제 1 URL들에 대한 사용자의 선택 기대치 및 상기 제 1 URL들의 소스(source) URL들의 타겟 스코어 중 적어도 하나를 고려한 가중치를 적용하여, 상기 제 1 그룹에 대한 티켓 수를 결정하는 단계를 포함하는 것을 특징으로 하는 웹 크롤링 방법.
  12. 제11항에 있어서,
    상기 티켓 수를 할당하는 단계는,
    상기 제 1 그룹에 대한 티켓 수를, 상기 제 1 그룹에 대한 최대 티켓 수 및 최소 티켓 수와 비교하여, 상기 제 1 그룹에 대한 최종 티켓 수를 결정하는 단계를 포함하는 것을 특징으로 하는 웹 크롤링 방법.
  13. 제1항에 있어서,
    상기 웹 크롤링 방법은,
    상기 소정의 크롤링 기간과 상기 호스트에 대해 설정된 전체 티켓 수에 기초하여, 상기 호스트에 대한 크롤링 허용 주기를 결정하는 단계를 더 포함하는 것을 특징으로 하는 웹 크롤링 방법.
  14. 제13항에 있어서,
    상기 크롤링하는 단계는,
    상기 호스트의 각 그룹에 대해 크롤링을 하는 경우, 상기 호스트에 대한 크롤링 간격이 상기 크롤링 허용 주기 이상 차이가 나도록 제어하는 단계를 포함하는 것을 특징으로 하는 웹 크롤링 방법.
  15. 제1항에 있어서,
    상기 웹 크롤링 방법은,
    상기 호스트의 각 그룹에 대해 크롤링을 하는 경우, 각 그룹에 대한 크롤링 속도가 상기 각 그룹에 대해 할당된 티켓 수와 상기 소정의 크롤링 기간에 기초하여 산출된 각 그룹별 크롤링 허용 속도를 초과하지 않도록 제어하는 단계를 더 포함하는 것을 특징으로 하는 웹 크롤링 방법.
  16. 하드웨어와 결합되어 제1항 내지 제15항 중 어느 하나의 항의 웹 크롤링 방법을 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램.
  17. 호스트에서 수집된 URL들을 분석하여, 상기 수집된 URL들을 분류하기 위한 적어도 하나의 그룹을 결정하고, 소정의 크롤링(crawling) 기간 동안 상기 적어도 하나의 그룹 각각에 대해 크롤링할 수 있는 티켓 수를 할당하는 자원 분배부;
    상기 할당된 티켓 수에 따라, 상기 호스트에 접속하여 상기 적어도 하나의 그룹 각각에 포함된 URL에 대응하는 웹 페이지를 크롤링하는 크롤러; 및
    상기 크롤러의 상기 적어도 하나의 그룹 각각에 대한 크롤링 스케쥴을 제어하는 스케쥴러를 포함하되,
    상기 적어도 하나의 그룹 각각에 대한 티켓 수는, 상기 적어도 하나의 그룹 각각에 대응하는 웹 페이지를 크롤링하기 위해 해당 웹 페이지를 보유한 호스트로 웹 페이지를 요청할 수 있는 횟수에 대응하는 것을 특징으로 하는 웹 크롤링 장치.
KR1020150190216A 2015-12-30 2015-12-30 웹 크롤링 장치 및 이에 의한 웹 크롤링 방법 KR101717063B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150190216A KR101717063B1 (ko) 2015-12-30 2015-12-30 웹 크롤링 장치 및 이에 의한 웹 크롤링 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150190216A KR101717063B1 (ko) 2015-12-30 2015-12-30 웹 크롤링 장치 및 이에 의한 웹 크롤링 방법

Publications (1)

Publication Number Publication Date
KR101717063B1 true KR101717063B1 (ko) 2017-03-17

Family

ID=58501973

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150190216A KR101717063B1 (ko) 2015-12-30 2015-12-30 웹 크롤링 장치 및 이에 의한 웹 크롤링 방법

Country Status (1)

Country Link
KR (1) KR101717063B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190053478A (ko) 2017-11-10 2019-05-20 신재오 종합 상품 정보 제공 방법
KR20200046586A (ko) * 2018-10-25 2020-05-07 (주)플로우 스마트 제품 등록 시스템 및 이를 이용한 국경간 온라인 상거래 시스템

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004220251A (ja) * 2003-01-14 2004-08-05 Nippon Telegr & Teleph Corp <Ntt> 情報抽出規則作成システム、情報抽出規則作成方法及び情報抽出規則作成プログラム
JP2010123000A (ja) * 2008-11-20 2010-06-03 Nippon Telegr & Teleph Corp <Ntt> Webページグループ抽出方法及び装置及びプログラム
JP2011525674A (ja) * 2008-06-23 2011-09-22 ダブル ベリファイ インコーポレイテッド インターネットベースの広告の自動監視および照合

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004220251A (ja) * 2003-01-14 2004-08-05 Nippon Telegr & Teleph Corp <Ntt> 情報抽出規則作成システム、情報抽出規則作成方法及び情報抽出規則作成プログラム
JP2011525674A (ja) * 2008-06-23 2011-09-22 ダブル ベリファイ インコーポレイテッド インターネットベースの広告の自動監視および照合
JP2010123000A (ja) * 2008-11-20 2010-06-03 Nippon Telegr & Teleph Corp <Ntt> Webページグループ抽出方法及び装置及びプログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190053478A (ko) 2017-11-10 2019-05-20 신재오 종합 상품 정보 제공 방법
KR20200046586A (ko) * 2018-10-25 2020-05-07 (주)플로우 스마트 제품 등록 시스템 및 이를 이용한 국경간 온라인 상거래 시스템
KR102257596B1 (ko) * 2018-10-25 2021-05-31 (주)플로우 스마트 제품 등록 시스템 및 이를 이용한 국경간 온라인 상거래 시스템

Similar Documents

Publication Publication Date Title
US9686374B2 (en) System and method for fragment level dynamic content regeneration
US20180285470A1 (en) A Mobile Web Cache Optimization Method Based on HTML5 Application Caching
US9229989B1 (en) Using resource load times in ranking search results
CN103329113B (zh) 配置用于分级高速缓存的代理服务器以及动态站点加速和自定义对象和相关的方法
US20120054440A1 (en) Systems and methods for providing a hierarchy of cache layers of different types for intext advertising
JP7254922B2 (ja) コンテンツの擬似パーソナライゼーションのための低エントロピーのブラウジング履歴
CN107251525A (zh) 用于支持移动设备用户的预测内容预取服务的分布式服务器架构
CN107251524A (zh) 管理预测预取内容的移动设备用户订购和服务偏好
JPH1091638A (ja) 検索システム
KR19980079647A (ko) 월드 와이드 웹에서의 목표 광고 방법
US20170091303A1 (en) Client-Side Web Usage Data Collection
CN109151824A (zh) 一种基于5g架构的图书馆数据服务扩展系统及方法
CN109359263B (zh) 一种用户行为特征提取方法及系统
CN111327606A (zh) 资源管理方法、系统及存储介质
KR101717063B1 (ko) 웹 크롤링 장치 및 이에 의한 웹 크롤링 방법
CN107526748B (zh) 一种识别用户点击行为的方法和设备
Singh et al. Enhancing the performance of web proxy server through cluster based prefetching techniques
Geetha et al. Dynamic semantic lfu policy with victim tracer (dslv): a customizing technique for client cache
US20160292260A1 (en) Aggregation of web interactions for personalized usage
CN111339388B (zh) 一种信息爬取系统
KR20110078665A (ko) 데이터 마이닝과 실시간 검색정보를 이용한 캐싱기법
US20110208717A1 (en) Chaffing search engines to obscure user activity and interests
CN112968980B (zh) 一种概率确定方法、装置、存储介质及服务器
Asad AdaptCache: Adaptive Data Partitioning and Replication for Distributed Object Caches
Kushwah et al. Various Techniques used to Improve the Performance of Proxy Caching

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20200102

Year of fee payment: 4