KR100924159B1 - 링크 추출 모듈 및 그 방법 - Google Patents

링크 추출 모듈 및 그 방법 Download PDF

Info

Publication number
KR100924159B1
KR100924159B1 KR1020070022742A KR20070022742A KR100924159B1 KR 100924159 B1 KR100924159 B1 KR 100924159B1 KR 1020070022742 A KR1020070022742 A KR 1020070022742A KR 20070022742 A KR20070022742 A KR 20070022742A KR 100924159 B1 KR100924159 B1 KR 100924159B1
Authority
KR
South Korea
Prior art keywords
unit
page
click
script
function
Prior art date
Application number
KR1020070022742A
Other languages
English (en)
Other versions
KR20080082217A (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 KR1020070022742A priority Critical patent/KR100924159B1/ko
Publication of KR20080082217A publication Critical patent/KR20080082217A/ko
Application granted granted Critical
Publication of KR100924159B1 publication Critical patent/KR100924159B1/ko

Links

Images

Landscapes

  • Engineering & Computer Science (AREA)
  • Information Transfer Between Computers (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)

Abstract

링크 추출 모듈 및 그 방법이 개시된다. 상기 링크 추출 모듈은 URL을 수신하고 수신된 URL에 상응하는 페이지를 네비게이션(navigation)하는 네비게이션부, 링크 정보를 저장하는 링크 저장부, 및 상기 네비게이션부가 네비게이션 할 상기 URL에 상응하는 페이지를 상기 네비게이션부에 로딩시키고, 상기 네비게이션부에 로딩된 페이지에서 클릭 요소들을 검색하여 검색된 클릭요소들 각각에 대한 클릭을 직접 수행하면서 얻게 되는 제1링크 정보를 상기 링크 저장부로 출력하는 제어부를 구비한다.

Description

링크 추출 모듈 및 그 방법{Link extract module and method thereof}
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 링크 추출 모듈의 개략적인 기능 블록도를 나타낸다.
도 2는 본 발명의 실시 예에 따른 네비게이션부를 제어할 때 사용될 수 있는 인터페이스를 나타낸다.
도 3은 본 발명의 실시 예에 따른 재정의 함수의 일 예를 나타낸다.
도 4는 본 발명의 실시 예에 따른 로딩부의 데이터 흐름을 설명하기 위한 플로우 챠트를 나타낸다.
도 5는 본 발명의 실시 예에 따른 스크립트 함수 추출부의 스크립트 함수 추출방법을 설명하기 위한 표이다.
도 6은 본 발명의 실시 예에 따른 오버라이딩 함수의 일 예를 나타낸다.
도 7은 본 발명의 실시 예에 따른 클릭부의 데이터 흐름을 설명하기 위한 플로우 챠트를 나타낸다.
본 발명은 링크 추출 방법에 관한 것으로, 보다 상세하게는 웹 페이지에 포함된 링크 정보뿐만 아니라, 웹 페이지에 포함되는 스크립트도 직접 클릭을 통해 수행하면서 스크립트에 포함되는 링크정보까지 자동으로 추출할 수 있는 방법 및 상기 방법을 수행하는 모듈에 관한 것이다.
인터넷의 무한 정보는 대부분이 HTML이라는 언어로 기술된 정보로 사용자들에게 제공되고 있다. 이 정보를 제공하는 웹 서버(Web Server)는 웹 사이트(Web Site)라고 불리는 사용자의 요구를 처리할 프로그램을 준비하게 된다.
이 웹서버는 HTML 의 조합들을 사용자의 요구에 따라 적절히 나누어서 제공하는 역할을 하게 된다. 이제 정보를 제공받아야 하는 사용자는 이 웹 서버와 통신으로 HTML을 얻어오게 되는데 이때 사용하는 것이 브라우저(Browser)이다. 이 브라우저는 웹 서버로부터 HTML로 된 정보파일을 받아와서 사용자가 읽을 수 있도록 컴퓨터 모니터 상에 보여준다. 이 브라우저는 처음에는 Text만으로 된 정보만 보여주는 것에서부터 출발하여 최근에는 그림, 음악 및 동영상의 멀티미디어까지 처리하면서 더더욱 복잡한 문서를 표현하기 위해 발전을 해왔다.
또한, 최근의 서비스 하는 웹사이트들은 이들 브라우저에 의해 가장 잘 보이는 페이지 구성을 효과적으로 표현하기 위해 스크립트들을 다수 이용하거나 다양한 컴포넌트를 사용하는 경우가 대다수이다.
한편, 인터넷에 존재하는 무한한 정보는 사용자의 요구에 의해 필요한 정보만을 찾는 정보검색기술의 발전을 가져왔다. 현재에는 다수의 웹 정보검색 서비스 업체(예컨대, Yahoo, Google, Naver 등)이 존재하고 있다.
일반적으로 웹 정보검색을 위해서는 웹 로봇이라는 프로그램으로 전체 해당 웹사이트의 페이지들 또는 그 중 특정 조건을 만족하는 페이지들을 모두 모으게 될 필요가 있다.
이들 웹 로봇의 동작 방식은 해당 웹사이트의 첫 관문인 루트 페이지에서부터 출발하여 해당 페이지가 가진 모든 링크(URL)를 추출하고 다시 이렇게 찾은 웹페이지로 재귀적으로 링크 추출하는 방법으로 되어 있다. 그러므로 웹 로봇의 동작의 가장 큰 이슈가 한 페이지에 쓰인 링크를 모두 추출해내는 것이 되는데 이들 웹 로봇에 쓰인 링크 추출 기술은 대부분의 경우 브라우저와는 상이하게 HTML 태그(tag) 분석을 통해 찾아지는 문자열에 기초하여 링크를 추출한다.
따라서, 전술한 바와 같이 스크립트에 의한 프로그램 가능한 링크 주소는 직접적으로 쫓아가지 못하고 결국 가져오는 페이지 수가 제한적으로 되는 한계에 부딪히게 된다.
일부의 웹 로봇은 스크립트 엔진을 장착하여 이 문제를 해결하려고도 하고 있으나 웹 브라우저에 탑재된 스크립트 엔진과의 버전 상이에 의해 제대로 링크 추출이 되지 않는 문제점을 여전히 가지게 되며 스크립트 엔진의 도입과 추가적인 업데이트에 쓰이는 비용으로 만만찮은 어려움에 직면하게 되기도 한다.
따라서, 태그 분석을 통한 링크 추출뿐만 아니라, 스크립트에 의한 프로그램 가능한 링크도 추출할 수 있고, 스크립트 엔진이 업데이트 되는 경우에도 추가적인 비용이 발생하지 않으면서 링크를 추출할 수 있는 방법 및 그 방법을 수행하는 장 치(또는 모듈)이 절실히 요구된다.
따라서 본 발명이 이루고자 하는 기술적인 과제는 태그 분석을 통한 링크 추출뿐만 아니라, 스크립트에 의한 프로그램 가능한 링크도 추출할 수 있고, 스크립트 엔진이 업데이트 되는 경우에도 추가적인 비용이 발생하지 않으면서 링크를 추출할 수 있는 방법 및 그 방법을 수행하는 장치(또는 모듈)를 제공하는 것이다.
상기 기술적 과제를 달성하기 위한 링크 추출 모듈은 URL을 수신하고 수신된 URL에 상응하는 페이지를 네비게이션(navigation)하는 네비게이션부, 링크 정보를 저장하는 링크 저장부, 및 상기 네비게이션부가 네비게이션 할 상기 URL에 상응하는 페이지를 상기 네비게이션부에 로딩시키고, 상기 네비게이션부에 로딩된 페이지에서 클릭 요소들을 검색하여 검색된 클릭요소들 각각에 대한 클릭을 직접 수행하면서 얻게 되는 제1링크 정보를 상기 링크 저장부로 출력하는 제어부를 구비한다.
상기 네비게이션부는 상기 URL에 상응하는 상기 페이지를 네비게이션 하는 메인 네비게이션부 및 상기 페이지를 네비게이션 하는 중에 로딩되는 새창을 네비게이션하기 위한 서브 네비게이션부를 구비할 수 있다.
상기 제어부는 상기 네비게이션부가 네비게이션 할 상기 페이지를 상기 네비게이션부에 로딩시키고, 상기 페이지를 로딩하는 동안에 로딩(loading)될 수 있는 취소될 객체의 로딩을 취소하는 로딩부 및 상기 네비게이션부에 로딩된 페이지에서 상기 클릭 요소들을 검색하여 상기 검색된 클릭요소들 각각에 대한 클릭을 수행하면서 얻게 되는 상기 제1링크 정보를 상기 링크 저장부로 출력하는 클릭부를 구비할 수 있다.
상기 클릭부는 상기 로딩된 페이지에 포함된 스크립트 함수를 추출하는 스크립트 추출부, 상기 스크립트 추출부에서 추출된 스크립트 함수들 중 제1인터럽트 함수를 인터럽트가 발생하지 않도록 오버라이딩 함수로 변환하는 스크립트 변환부, 및 상기 스크립트 변환부에 의해 변환된 함수를 포함하는 상기 로딩된 페이지에 포함된 상기 클릭 요소들을 검색하고, 검색된 상기 클릭 요소들 각각에 대한 클릭을 수행하는 클릭 생성부를 구비할 수 있다.
상기 로딩부는 상기 URL에 상응하는 페이지를 로딩하는 동안에 직접 얻을 수 있는 제2링크 정보를 수집하고, 수집된 제2링크 정보를 상기 링크 저장부로 출력할 수 있다.
상기 클릭부는 상기 네비게이션부에 로딩된 페이지로부터 직접 얻을 수 있는 제3링크 정보를 수집하고, 수집된 제3링크 정보를 상기 링크 저장부로 출력할 수 있다.
상기 취소 객체는 상기 로딩부가 상기 URL에 상응하는 상기 페이지를 로딩하는 동안에 로딩 될 수 있는 다운로드 창 또는 제어창 중 적어도 하나를 포함할 수 있다.
상기 로딩부는 상기 로딩부가 상기 URL에 상응하는 상기 페이지를 로딩하는 동안에 상기 새 창이 로딩되는 경우, 상기 새창을 상기 서브 네비게이션부에 로딩하고, 상기 서브 네비게이션부에 로딩된 페이지로부터 얻을 수 있는 링크 정보를 상기 링크 저장부로 출력할 수 있다.
상기 로딩부는 상기 로딩부가 상기 URL에 상응하는 상기 페이지를 로딩하는 동안에 스크립트에 의한 제2인터럽트 함수가 실행되는 경우, 상기 제2인터럽트 함수에 상응하고 인터럽트가 발생하지 않도록 재정의된 재정의 함수를 실행할 수 있다.
상기 스크립트 추출부는 상기 로딩된 페이지에 포함된 스크립트를 추출하고, 추출된 스크립트에 포함된 문자열 중 스크립트 함수 신택스(syntax)와 일치하는 문자열을 스크립트 함수로 추출할 수 있다.
상기 스크립트 변환부는 상기 스크립트 추출부에서 추출된 스크립트 함수들 중에서 상기 제1인터럽트 함수를 검색하고, 검색된 상기 제1인터럽트 함수를 상기 오버라이딩 함수로 변환할 수 있다.
상기 클릭 생성부는 상기 스크립트 변환부에 의해 변환된 함수를 포함하는 상기 로딩된 페이지에서 온클릭(on-click) 이벤트를 포함하는 상기 클릭 요소들을 검색하고, 검색된 상기 클릭 요소들 각각에 대한 클릭(click) 이벤트를 수행하여 클릭을 수행할 수 있다.
상기 기술적 과제를 해결하기 위한 링크 추출 방법은 제어부가 네비게이션부에 상기 네비게이션부가 네비게이션 할 URL에 상응하는 페이지를 로딩시키는 단계, 상기 네비게이션부에 로딩된 상기 페이지에서 클릭 요소들을 검색하여 검색된 클릭 요소들 각각에 대한 클릭을 직접 수행하면서 제1링크 정보를 획득하는 단계, 및 획득된 상기 제1링크 정보를 저장하는 단계를 구비한다.
상기 링크 추출 방법은 상기 제어부가 상기 네비게이션부에 상기 페이지를 로딩하는 동안에 로딩(loading)될 수 있는 취소 객체의 로딩을 취소하는 단계를 더 구비할 수 있다.
상기 제1링크 정보를 획득하는 단계는 상기 제어부가 상기 네비게이션부에 로딩된 페이지에 포함된 스크립트 함수를 추출하는 단계, 추출된 스크립트 함수들 중 제1인터럽트 함수를 인터럽트가 발생하지 않도록 오버라이딩 함수로 변환하는 단계, 및 변환된 상기 오버라이딩 함수를 포함하는 상기 로딩된 페이지에 포함된 상기 클릭 요소들을 검색하고, 검색된 상기 클릭 요소들 각각에 대한 클릭을 수행하는 단계를 구비할 수 있다.
상기 링크 추출 방법은 상기 제어부가 상기 페이지를 로딩하는 동안에 직접 얻을 수 있는 제2링크 정보를 수집하고, 수집된 제2링크 정보를 저장하는 단계를 더 구비할 수 있다.
상기 링크 추출 방법은 상기 제어부가 상기 네비게이션부에 로딩된 페이지로부터 직접 얻을 수 있는 제3링크 정보를 수집하고, 수집된 제3링크 정보를 저장하는 단계를 더 구비할 수 있다.
상기 URL에 상응하는 상기 페이지를 로딩시키는 단계는 상기 제어부가 상기 페이지를 로딩하는 동안에 로딩 될 수 있는 다운로드 창 또는 제어창 중 적어도 하나를 포함하는 객체를 로딩 취소시키는 단계를 구비할 수 있다.
상기 URL에 상응하는 상기 페이지를 로딩시키는 단계는 상기 제어부가 상기 페이지를 상기 네비게이션부에 포함된 메인 네비게이션부에 로딩하는 동안에 새 창이 로딩되는 경우, 상기 제어부는 상기 새 창을 상기 네비게이션부에 포함된 서브 네비게이션부에 로딩하는 단계, 상기 서브 네비게이션부에 로딩된 페이지로부터 얻을 수 있는 링크 정보를 저장하는 단계를 구비할 수 있다.
상기 URL에 상응하는 상기 페이지를 로딩시키는 단계는 상기 제어부가 상기 페이지를 로딩하는 동안에 스크립트에 의한 제2인터럽트 함수가 실행되는 경우, 상기 제어부는 상기 제2인터럽트 함수에 상응하고 인터럽트가 발생하지 않도록 재정의된 재정의 함수를 실행하는 단계를 구비할 수 있다.
상기 스크립트 함수를 추출하는 단계는 상기 제어부가 상기 네비게이션부에 로딩된 페이지에 포함된 스크립트를 추출하는 단계 및 추출된 스크립트에 포함된 문자열 중 스크립트 함수 신택스(syntax)와 일치하는 문자열을 스크립트 함수로 추출하는 단계를 구비할 수 있다.
상기 오버라이딩 함수로 변환하는 단계는 상기 제어부가 추출된 상기 스크립트 함수 중에서 상기 제1인터럽트 함수를 검색하는 단계 및 검색된 상기 제1인터럽트 함수를 상기 오버라이딩 함수로 변환하는 단계를 구비할 수 있다.
상기 검색된 상기 클릭 요소들 각각에 대한 클릭을 수행하는 단계는 변환된 상기 오버라이딩 함수를 포함하는 상기 로딩된 페이지에서 온클릭(on-click) 이벤트를 포함하는 상기 클릭 요소들을 검색하는 단계 및 검색된 상기 클릭 요소들 각각에 대한 클릭(click) 이벤트를 수행하여 클릭을 수행하는 단계를 구비할 수 있다.
상기 링크 추출 방법은 컴퓨터가 판독가능한 프로그램을 기록한 기록매체에 저장될 수 있다.
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
삭제
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
또한, 본 명세서에 있어서는 어느 하나의 구성요소가 다른 구성요소로 데이터를 '전송'하는 경우에는 상기 구성요소는 상기 다른 구성요소로 직접 상기 데이터를 전송할 수도 있고, 적어도 하나의 또 다른 구성요소를 통하여 상기 데이터를 상기 다른 구성요소로 전송할 수도 있는 것을 의미한다.
반대로 어느 하나의 구성요소가 다른 구성요소로 데이터를 '직접 전송'하는 경우에는 상기 구성요소에서 다른 구성요소를 통하지 않고 상기 다른 구성요소로 상기 데이터가 전송되는 것을 의미한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 실시 예에 따른 링크 추출 모듈의 개략적인 기능 블록도를 나타낸다.
도 1을 참조하면, 본 발명의 실시 예에 따른 링크 추출 모듈(100)은 네비게이션부(200), 제어부(300), 및 링크 저장부(400)을 구비한다.
상기 네비게이션부(200)는 웹 페이지를 구성하는 HTML(hyper text markup language) 또는 스크립트 등의 구성요소를 네비게이션(즉, 상기 구성요소에 상응하는 동작을 수행)할 수 있다. 즉, 상기 네비게이션부(200)는 입력되는 URL에 상응하 는 페이지를 브라우징(browsing) 하는 역할을 수행할 수 있으며, 상기 네비게이션부(200)가 네비게이션한 결과를 소정의 인터페이스를 통하여 출력하는 프로그램이 웹 브라우저(web browser)가 될 수 있다.
본 명세서에서 URL이라 함은 HTML로 구성되는 웹 페이지에 상응하는 파일뿐만 아니라, 인터넷에서 하나의 주소를 통하여 액세스(access) 할 수 있는 모든 파일들(예컨대, HWP, DOC, SWF 등의 확장자를 가지는 파일들)의 경로를 포함하는 의미로 정의될 수 있다.
상기 네비게이션부(200)는 입력되는 URL의 루트(root) 페이지를 네비게이션할 메인 네비게이션부(210) 및 상기 루트 페이지를 네비게이션 하기 위해 상기 루트 페이지를 구성하는 구성요소(예컨대, HTML 문서 또는 스크립트 등)를 상기 메인 네비게이션부(210)에 로딩(loading)하는 동안에 생성될 수 있는 팝업 창(popup window) 등과 같은 새로운 창을 네비게이션 하기 위한 서브 네비게이션부(220)를 구비할 수 있다.
예컨대, 상기 네비게이션부(200)는 MS(MicroSoft)사의 IE(Internet Expolrer)에서 제공되는 IE 컨트롤(Control)일 수 있으나, 본 발명의 권리범위가 이에 한정되지는 않는다.
또한, 본 명세서에서는 상기 네비게이션부(200)가 상기 MS사의 IE 컨트롤인 경우를 일 예로 들어 설명하지만, 입력되는 URL을 네비게이션할 수 있고, 상기 IE 컨트롤과 동일한 기능을 수행할 수 있는 여타의 프로그램도 본 발명의 기술적 사상에 포함될 수 있다.
상기 메인 네비게이션부(210)가 페이지를 로딩하는 동안, 새 창(예컨대, 팝업 창 등)이 로딩되는 경우에는 상기 제어부(300)는 상기 서브 네비게이션부(220)에 상기 새 창을 로딩함으로써 상기 메인 네비게이션부(210)에 로딩되어 있는 코드들을 그대로 유지할 수 있다.
상기 네비게이션부(200)는 상술한 기능을 수행하기 위한 프로그램 코드 및 상기 프로그램 코드를 수행하기 위한 하드웨어의 조합일 수 있다.
상기 제어부(300)는 상기 네비게이션부(200)가 페이지를 네비게이션 하는 동안 링크 정보를 추출하기 위해 상기 네비게이션부(200)를 제어할 수 있다.
상기 제어부(300)가 상기 네비게이션부(200)를 제어하기 위해, 상기 제어부(300)는 상기 네비게이션부(200)가 웹 페이지를 표현하게 되는 일련의 과정에서 처리하게 되는 디스패치 아이디(Dispatch ID)들을 이용할 수 있다.
도 2는 본 발명의 실시 예에 따른 네비게이션부를 제어할 때 사용될 수 있는 인터페이스를 나타낸다.
즉, 도 2에 도시된 디스패치 아이디는 상기 네비게이션부(200)가 IE 컨트롤로 구현되는 경우 상기 네비게이션부(200)가 상기 제어부(300)로부터 입력되는 페이지를 네비게이션 하는 동안 도 2의 '설명' 부분에 해당하는 동작이 수행될 때 처리되는 함수들의 일 예일 수 있다.
예컨대, 상기 네비게이션부(200)는 먼저 웹 페이지를 명시하여 호출할 수 있는 "Navigate()"라는 멤버(member) 함수를 준비하고 있으며, 이 함수에 로딩할 URL을 인자로 입력하고 호출하면 상기 네비게이션부(200)로 상기 로딩할 URL에 상응하 는 페이지가 로딩된다. 만약, 상기 제어부(300)가 상기 로딩할 URL에 상응하는 페이지의 로딩을 취소하고자 하는 경우라면, 도 2에 도시된 "DISPID_BEFORENAVIGATE2"에 포함된 페이지 로딩 취소 기능을 사용할 수 있다.
또한, 전술한 바와 같이, 팝업 창과 같은 알림 기능의 새 창이 로딩되는 경우에 상기 네비게이션부(200)에는 "DISPID_NEWWINDOW2"가 호출되는데, 이 때 상기 제어부(300)는 상기 새 창이 로딩되는 것을 막기 위해 상기 "DISPID_NEWWINDOW2" 인터페이스의 출력창 제어를 통해 새로운 창을 만들지 못하게 하고 준비된 상기 서브 네비게이션부(220)에 상기 새 창을 로딩할 수 있다.
다시 도 1을 참조하면, 상기 제어부(300)는 상기 네비게이션부(200)가 네비게이션 할 상기 URL에 상응하는 페이지를 상기 네비게이션부(200)에 로딩시키고, 상기 네비게이션부(200)에 로딩 된 페이지에서 클릭 요소들을 검색하여 검색된 클릭요소들 각각에 대한 클릭을 직접 수행하면서 얻게 되는 제1링크 정보를 상기 링크 저장(400)부로 출력할 수 있다.
즉, 상기 제어부(300)는 종래의 검색 로봇과 같이 태그 분석을 통한 링크 추출뿐만 아니라, 웹 페이지를 실제로 네비게이션 하면서, 클릭을 할 수 있는 구성요소(예컨대, 스크립트 등)들 전부 또는 미리 정해진 조건을 만족하는 소정의 구성요소만을 실제로 클릭을 통해 수행하여, 수행결과 다른 주소로 링크되거나 상기 구성요소의 수행결과 링크정보가 나오는 경우에 각각의 링크에 대한 정보들을 추출할 수 있는 것이다.
또한, 상기 제어부(300)는 실제 웹 페이지를 네비게이션 하면서 자동으로 링 크 정보를 추출하는 동안 발생 될 수 있는 중단요소(즉, 파일 다운로드 창의 생성, 또는 경고창의 생성 등과 같이 사용자의 입력을 기다리기 위해 네비게이션이 중지될 수 있는 요소)가 로딩되는 것을 방지함으로써 자동으로 링크 정보를 추출할 수 있는 것이다.
또한, 본 명세서에서의 클릭이라 함은, 마우스를 통한 클릭(click) 뿐만 아니라, 소정의 다른 입력장치(예컨대, 키보드 등)를 통하여 선택된 구성요소를 수행하기 위해 발생되는 모든 이벤트들을 포함하는 의미로 사용될 수 있다.
상기 제어부(300)는 로딩부(310) 및 클릭부(330)를 구비할 수 있다.
상기 로딩부(310)는 상기 네비게이션부(200)가 네비게이션 할 상기 페이지를 상기 메인 네비게이션부(210)에 로딩시킬 수 있으며, 상기 페이지를 로딩하는 동안에 로딩(loading)될 수 있는 취소될 객체의 로딩을 취소할 수 있다.
또한, 상기 로딩부(310)는 상기 페이지를 로딩하는 동안, 새 창이 로딩되는 경우에는 상기 새 창을 상기 서브 네비게이션부(220)에 로딩시킬 수 있다.
상기 취소될 객체라 함은, 상기 로딩부(310)가 상기 메인 네비게이션부(210)에 상기 페이지를 로딩하는 동안, 상기 취소될 객체가 로딩됨으로써 상기 링크 추출 모듈(100)이 자동으로 링크 정보를 추출하는 동작을 멈추게 할 수 있는 객체를 의미할 수 있다.
예컨대, 상기 취소될 객체는 상기 로딩부(310)가 상기 URL에 상응하는 상기 페이지를 로딩하는 동안에 로딩 될 수 있는 다운로드 창 또는 제어창(예컨대, 액티브엑스 컨트롤(Active X Control) 창) 중 적어도 하나를 포함하는 객체일 수 있다.
그러면, 상기 로딩부(310)는 상기 네비게이션부(200)가 상기 페이지를 로딩하는 동안 파일이 다운로드가 필요할 경우, 도 2에 도시된 "DISPID_FILEDOWNLOAD" 인터페이스의 취소기능을 이용하여 이러한 파일의 네비게이션 시에 항상 취소가 되도록 하여 모든 바이너리 파일과 기타 다운로드가 일어나는 파일들에 대해 다운로드 창이 발생하지 않도록 상기 네비게이션부(200)를 제어할 수 있다.
또한, 일부 파일의 종류에 따라 상기 네비게이션부(200)가 자동으로 연결된 제어창(예컨대, 액티브엑스 컨트롤)을 실행시킬 수 있는데 이때 상기 제어창(예컨대, 액티브엑스 컨트롤) 이 사용자에게 입력을 얻기 위해 창을 발생시켜서 다음 진행을 방해할 수 있다. 이를 제거하기 위해서 상기 제어부(300)는 알려진 확장자를 기준으로 의심되는 확장자라면 앞서와 같이 네비게이션시에 취소를 시킬 수 있다.
또한, 상기 로딩부(310)는 도 2에서 설명한 바와 같이, 팝업 창과 같은 알림 기능의 새 창이 로딩되는 경우에 상기 네비게이션부(200)에는 "DISPID_NEWWINDOW2"가 호출되는데, 이 때 상기 제어부(300)는 상기 새 창이 로딩되는 것을 막기 위해 상기 "DISPID_NEWWINDOW2" 인터페이스의 출력창 제어를 통해 새로운 창을 만들지 못하게 하고 준비된 상기 서브 네비게이션부(220)에 상기 새 창을 로딩할 수 있다.
또한, 상기 로딩부(310)는 상기 페이지가 로딩 될 때 실행되는 스크립트에 의해 중단되는 것을 방지할 수 있다. 즉, 상기 로딩부(310)는 상기 페이지를 로딩하는 동안에 스크립트에 의한 제2인터럽트 함수(예컨대, 스크립트에 포함된 입력창 또는 경고창과 같이 시스템에서 준비된 창 등)가 실행되는 경우, 상기 제2인터럽트 함수에 상응하고 인터럽트가 발생하지 않도록 재정의된 재정의 함수를 실행할 수 있다.
도 3은 본 발명의 실시 예에 따른 제2인터럽트 함수 및 상기 제2인터럽트 함수에 대응되는 재정의 함수의 일 예를 나타내는데, 도 3에 도시된 상기 제2인터럽트 함수(예컨대, "window.alert", "window.showHelp" 등)가 네비게이션 중에 실행되는 경우 경고창 등이 로딩되면서 네비게이션이 중단될 수 있다.
따라서, 상기 로딩부(310)는 상기 제2인터럽트 함수를 인터럽트가 발생하지 않도록 도 3과 같이 미리 재정의하고, 상기 제2인터럽트 함수가 실행되려하는 경우, 재정의된 함수가 실행되도록 함으로써 상기 재정의 함수를 실행할 수 있다.
상기 재정의 함수(예컨대, "function() {}"는 도 3에 도시된 바와 같이 어떤 동작도 수행하지 않는 널 펑션(Null function)일 수 있다.
예컨대, 상기 네비게이션부(200)가 IE 컨트롤로 구현된 경우, 상기 로딩부(310)는 도 2에 도시된 "DISPID_NAVIGATECOMPLETE2"를 이용하여 네비게이션이 완료되는 프레임(frame)마다 도 3에 도시된 것과 같은 프로토타입 재정의 신택스(prototype redefinition syntax)를 사용하여 스크립트를 실행하도록 할 수 있다. 이를 위해 'IHTMLWindow2' 인터페이스의 멤버함수인 "execScript()"를 사용해서 원하는 스크립트를 실행시킬 수 있다. 상기 'IHTMLWindow2' 인터페이스의 메뉴얼은 본 명세서의 레퍼런스로 참조될 수 있다.
다시 도 1을 참조하면, 상기 로딩부(310)는 상기 페이지를 로딩하는 동안에 직접 얻을 수 있는 링크 정보를 수집하고, 수집된 제2링크 정보를 상기 링크 저장부(400)로 출력할 수 있음은 물론이다.
예컨대, 프레임으로 구성된 페이지의 경우 상기 프레임에 해당하는 URL 주소 정보 등은 상기 클릭부(330)에서 클릭을 통해 직접 수행할 필요가 없이 바로 얻을 수 있는 링크 정보이므로 상기 로딩부(310)는 상기 프레임의 주소 정보 등을 상기 링크 저장부(400)로 출력할 수 있다.
또한, 상기 로딩부(310)는 팝업 창과 같은 새 창이 로딩되는 경우의 새 창의 주소 정보 역시 상기 클릭부(330)에서 클릭을 통해 직접 수행할 필요가 없이 바로 얻을 수 있는 링크 정보이다. 이 경우 전술한 바와 같이 상기 로딩부(310)는 팝업 창과 같은 상기 새 창을 서브 네비게이션부(220)에 로딩할 수 있다.
그러면, 상기 서브 네비게이션부(220)는 상기 새 창의 주소로 새로운 네비게이션을 수행하게 되므로, 상기 로딩부(310)는 상기 서브 네비게이션부(220)에 로딩된 페이지에 포함된 구성요소들의 로딩을 취소하면서 얻을 수 있는 링크 정보를 상기 링크 저장부(400)로 출력할 수 있다.
예컨대, 상기 로딩부(310)는 상기 서브 네비게이션부(220)의 각각의 구성요소들이 네비게이션 되기 전에 "DISPID_BEFORNAVIGATE2" 단계에서 네비게이션 취소 기능을 수행하면서 얻어지는 링크 정보를 상기 링크 저장부(400)로 출력할 수 있다.
상술한 바와 같은 상기 로딩부(310)에 의한 데이터의 흐름은 도 4에 도시된 바와 같다.
도 4는 본 발명의 실시 예에 따른 로딩부의 데이터 흐름을 설명하기 위한 플로우 챠트를 나타낸다.
도 1 및 도 4를 참조하면, 상기 로딩부(310)는 상기 네비게이션부(200)에 상기 페이지에 상응하는 URL을 출력하여 상기 페이지를 로딩할 수 있다(S100).
그러면, 상기 로딩부(310)는 상기 페이지가 로딩되는 동안 상기 페이지에 로딩되는 구성요소들 중 스크립트는 상기 클릭부(330)에서 상기 스크립트에 상응하는 동작을 수행하면서 링크 정보를 얻을 수 있으므로 넘어가고(S110), 상기 구성요소들 중 HTML 문서 즉, 태그 분석을 통해 직접 링크 정보를 얻을 수 있는 경우에는(S111) 상기 링크 저장부(400)로 상기 링크 정보를 출력하여 저장할 수 있다(S112).
또한, 상기 페이지가 로딩되는 동안 상기 로딩부(310)는 새 창이 로딩되는 경우(S120), 상기 새 창이 상기 메인 네비게이션부(210)에서 로딩되는지 여부를 파악하고(S121), 상기 메인 네비게이션부(210)에서 로딩되지 않은 경우 즉, 상기 서브 네비게이션부(220)에서 로딩되는 경우에는 상기 새 창의 로딩을 취소할 수 있다(S123). 즉, 상기 서브 네비게이션부(220)에서 다시 새 창을 로딩하는 경우이므로 상기 새 창의 로딩을 취소할 수 있다. 이때 얻을 수 있는 링크 정보를 상기 링크 저장부(400)로 출력할 수 있음은 전술한 바와 같다. 상기 메인 네비게이션부(210)에서 로딩되는 경우에는 상기 새 창을 상기 서브 네비게이션부(220)로 로딩할 수 있다(S122).
또한, 상기 페이지가 로딩되는 동안 다운로드 창 또는 제어창(예컨대, 액티브엑스 컨트롤 창 등)이 로딩되는 경우(S130), 상기 로딩부(310)는 상기 다운로드 창 또는 제어창(예컨대, 액티브엑스 컨트롤 창 등)의 로딩을 취소할 수 있 다(S131).
또한, 상기 로딩부(310)는 상기 네비게이션부(200)가 네비게이션하는 어떤 주소(예컨대, 프레임의 주소)의 네비게이션이 완료된 경우(S140), 네비게이션이 완료된 주소에 포함될 수 있는 상기 제2인터럽트 함수를 상기 재정의 함수로 재정의할 수 있는 스크립트를 실행할 수 있다(S141). 따라서, 상기 제2인터럽트 함수에 의한 인터럽트(즉, 링크 정보를 자동으로 추출 중에 생길 수 있는 중지)를 방지할 수 있다.
다시 도 1을 참조하면, 상기 클릭부(330)는 상기 네비게이션부(200)에 로딩된 페이지에서 상기 클릭 요소들을 검색하여 상기 검색된 클릭요소들 각각에 대한 클릭을 수행하면서 얻게 되는 상기 제1링크 정보를 상기 링크 저장부(400)로 출력할 수 있다.
예컨대, 상기 네비게이션부(200)가 IE 컨트롤인 경우 상기 클릭부(330)는 도 2에 도시된 "DiSPID_DOCUMENTCOMPLETE"에 의해 확인된 로딩 완료 페이지에 대해 "IHTMLDocument2"를 활용하여 HTML 요소들을 "IHTMLElement" 인터페이스로 쫓아가며 직접 click() 이벤트를 발생시킬 수 있다. 상기 "IHTMLDocument2" 및 상기 "IHTMLElement" 각각의 메뉴얼은 본 명세서의 레퍼런스로 참조될 수 있다.
상기 클릭부(330)는 상기 검색된 클릭요소들 모두에 대해서 클릭을 수행할 수도 있고, 일정한 조건(예컨대, 소정의 태그를 포함하는 클릭요소)을 만족하는 클릭요소들에 대해서만 클릭을 수행할 수도 있음은 물론이다.
상기 클릭부(330)는 상기 로딩된 페이지에 포함된 스크립트 함수를 추출하는 스크립트 추출부(331), 상기 스크립트 추출부(331)에서 추출된 스크립트 함수들 중 제1인터럽트 함수를 인터럽트가 발생하지 않도록 재정의된 오버라이딩 함수로 변환하는 스크립트 변환부(333), 및 상기 스크립트 변환부(333)에 의해 변환된 함수를 포함하는 상기 로딩된 페이지에 포함된 상기 클릭 요소들을 검색하고, 검색된 상기 클릭 요소들 각각에 대한 클릭을 수행하는 클릭 생성부(335)를 구비할 수 있다.
또한, 상기 클릭부(330)는 상기 네비게이션부(200)에 로딩된 페이지로부터 직접 얻을 수 있는 제3링크 정보를 수집하고, 수집된 제3링크 정보를 상기 링크 저장부(400)로 출력할 수 있음은 물론이다. 즉, 상기 네비게이션부(200)에 로딩 완료된 페이지의 코드로부터 직접 링크 정보임을 알 수 있는 경우(예컨대, <a href> 태그에 포함되어 있는 직접적인 URL 주소들 "http://www.primepat.com" 등) 그 링크 정보에 대해서는 클릭을 수행하지 않고 바로 저장할 수 있다.
상기 클릭부(330)는 상기 로딩된 페이지가 프레임으로 구성된 페이지인 경우에는, 상기 프레임 내부에 포함된 HTML 태그들에 대해서는 클릭을 하지 않을 수 있다. 즉, 상기 로딩부(310)에서 상기 프레임 자체 주소에 대해서는 링크 정보로 얻어올 수 있기 때문이다. 이를 위해 예컨대, "IHtmlDocument2"에서 태그를 검색할 경우 프레임 내의 태그는 검색하지 않으므로 용이하게 구현할 수 있다.
상기 클릭부(330)에서는 전술한 상기 로딩부(310)에서 재정의한 제2인터럽트 함수 외에 제어를 해야하는 스크립트 함수들, 예를 들면 window.external로 표현되는 함수들이나 스크립트를 수행하는 중에 발생될 수 있는 제어창(예컨대,액티브엑스 컨트롤 등) 등 자동으로 링크를 추출하는 것을 방해하지 않도록 해당 스크립트 들을 수정할 필요가 있다. 즉, window.external 함수들은 도 3에 도시된 바와 같은 방법으로 재정의되지 않으므로, 이를 구현하기 위해 이들과 관련 있는 스크립트 함수부분을 찾아내고 이 부분을 수정한 똑같은 함수를 만들어 오버라이딩(overriding)시켜 스크립트를 실행함으로써 해당 함수의 실행시에 이러한 중단 요소의 실행을 막을 수 있다.
이를 위해, 상기 스크립트 함수 추출부(331)는 상기 로딩된 페이지에 포함된 스크립트를 추출하고, 추출된 스크립트에 포함된 문자열 중 스크립트 함수 신택스(syntax)와 일치하는 문자열을 스크립트 함수로 추출할 수 있다.
상기 스크립트 함수 추출부(331)는 상기 로딩된 페이지 외의 외부주소로 인클루드(include) 되어 있는 스크립트 파일까지 포함하여 상기 로딩된 페이지를 나타내기 위해 쓰이게 될 모든 스크립트 함수가 상기 네비게이션부(200)에 포함된 스크립트 엔진에 로딩 될 수 있으므로 상기 모든 스크립트 함수를 대상으로 상기 스크립트 함수를 추출할 수 있다. 이를 위해 상기 스크립트 함수 추출부(331)는 HTML에서 사용되는 스크립트 태그(예컨대, <SCRIPT> </SCRIPT>"를 검색하고, 검색된 태그에 상응하는 스크립트의 코드들을 스크립트 문자열로 만들 수 있다.
그러면, 상기 스크립트 함수 추출부(331)는 만들어진 상기 스크립트 문자열중에서 스크립트 함수 정의 신택스(Syntax)에 부합되는 문자열을 스크립트 함수로 추출할 수 있다.
도 5는 본 발명의 실시 예에 따른 스크립트 함수 추출부의 스크립트 함수 추출방법을 설명하기 위한 표를 나타내는데, 스크립트 함수는 도 5에 도시된 바와 같 은 문법 즉, 신택스 규칙을 따르게 된다.
즉, 스크립트 함수는 도 5에 도시된 바와 같은 레귤러 익스프레션(regular expression)으로 표현될 수 있고, 상기 스크립트 함수를 구성하는 토큰들 각각의 레귤러 익스프레션 역시 도 5에 도시되어 있다.
레귤러 익스프레션에 대해서는 전산학 및 관련학문에서 널리 사용되는 용어로 본 발명의 기술분야에서 평균적 전문가에게 널리 알려져 있으므로 상세한 설명은 생략한다.
따라서, 상기 스크립트 함수 추출부(331)는 만들어진 상기 스크립트 문자열에서 스크립트 함수를 나타내는 부분문자열들을 추출할 수 있으며, 추출된 각각의 부분문자열은 소정의 데이터 구조(예컨대, 어레이(array) 또는 트리(tree) 등)를 통하여 저장될 수 있다.
본 발명의 실시 예에서는 레귤러 익스프레션을 이용한 함수 추출방법을 일 예로 설명하고 있지만, 본 발명의 권리 범위가 이에 한정되지는 않으며 다수의 문자들로 이루어진 문자열에서 스크립트 함수를 추출할 수 있는 다른 방법(예컨대, 스크립트 함수의 이름이 저장된 테이블과 비교하는 방법 등)을 사용할 수 있음은 물론이다.
다시 도 1을 참조하면, 상기 스크립트 변환부(333)는 상기 스크립트 함수 추출부(331)에서 추출된 스크립트 함수들 중에서 상기 제1인터럽트 함수를 검색하고, 검색된 상기 제1인터럽트 함수를 인터럽트가 발생하지 않도록 정의된 오버라이딩 함수로 변환할 수 있다.
도 6은 본 발명의 실시 예에 따른 제1인터럽트 함수 및 상기 제1인터럽트 함수에 대응되는 오버라이딩 함수의 일 예를 나타낸다.
도 6에서는 도 3에 도시된 바와 같이 상기 로딩부(310)에서 재정의할 수 없는 스크립트 함수들 즉 제1인터럽트 함수의 일 예가 도시되어 있다. 예컨대, 상기 스크립트 변환부(333)는 만들어진 상기 스크립트 문자열 중 "external.AddFavorite"라는 문자열이 발견되면 발견된 "external.AddFavorite" 문자열을 "abc"라는 문자열로 치환 즉, 오버라이딩할 수 있다. 물론 "abc"라는 이름을 가진 함수는 인터럽트를 발생하지 않도록 미리 정의된 함수일 수 있다. 예컨대, "abc() {};"와 같이 미리 정의될 수 있다. 오버라이딩되는 함수의 이름이 다양할 수 있음은 물론이다. 도 6에 도시된 바와 같은 제1인터럽트 함수들 및 상기 제1인터럽트 함수들 각각에 대응되는 오버라이딩 함수는 소정의 데이터 구조(예컨대, 어레이, 트리, 또는 테이블 등)을 통하여 미리 소정의 메모리 장치에 저장될 수 있다.
즉, 상기 스크립트 변환부(333)는 상기 스크립트 함수 추출부(331)에서 상기 소정의 데이터 구조(예컨대, 어레이 또는 트리 등)를 통하여 저장된 부분 문자열 중 도 6에 도시된 바와 같은 소정의 메모리 장치에 저장된 제1인터럽트 함수들이 검색되면, 검색된 상기 제1인터럽트 함수들 각각에 대응되는 오버라이딩 함수로 상기 제1인터럽트 함수들 각각을 변환(즉, 오버라이딩)할 수 있다. 상기 제1인터럽트 함수들 각각에 대응되는 오버라이딩 함수는 서로 다를 수 있음은 물론이다.
또한, 상기 스크립트 변환부(333)는 상술한 함수 오버라이딩 외에도 상기 로 딩된 페이지에 포함된 본문 HTML 태그중 스크립트 액션(action)이 일어나는 부분에 포함된 스크립트도 함께 수정할 수 있다.
이를 위해 상기 스크립트 변환부(333)는 전체 HTML 본문 내용중 태그 및 태그에 상응하는 코드 자체를 문자열로 만들어서 수정이 필요한 부분을 새로운 문자열로 바꾸고(예컨대, "IHtmlElement"의 "get_innerHTML()" 멤버함수를 이용하여) 바뀐 문자열을 다시 분문 내용으로 인식되도록 리로드(reload)해주는 것으로 가능하다(예컨대, "IHtmlElement"의 "put_innerHTML()" 멤버함수를 이용하여). 상기 수정이 필요한 부분은 도 6과 유사한 방식으로 미리 정의되어 소정의 메모리 장치에 저장될 수 있다.
상기 클릭 생성부(335)는 상기 스크립트 변환부(333)에 의해 변환된 함수를 포함하는 상기 로딩된 페이지에서 상기 클릭 요소들을 검색하고, 검색된 상기 클릭 요소들 각각에 대한 클릭을 수행할 수 있다.
예컨대, 상기 클릭 생성부(335)는 온클릭(on-click) 이벤트를 포함하는 상기 클릭 요소들을 검색하고, 검색된 상기 클릭 요소들 각각에 대한 클릭(click) 이벤트를 수행하여 클릭을 수행할 수 있다.
이를 위해 IE 컨트롤의 경우에는, 상기 클릭 생성부(335)는 "IHTMLDocument2"에서 얻어지는 "IHTMLElementCollection"을 이용해서 "IHTMLElement"를 루프(loop)를 돌면서 클릭 가능한 태그들에 대해서 "IHTMLElement"의 멤버 함수인 "click()"을 실행시키는 일을 한다.
또한, 전술한 바와 같이 상기 클릭 생성부(335)는 검색된 클릭요소들 중, 소 정의 조건에 만족하는 클릭 요소들에 대해서만 클릭을 수해할 수도 있다. 예컨대, <A>, <AREA> 태그와 함께 "onclick" 이벤트를 가진 태그들로 클릭을 수행할 클릭 요소들을 한정할 수 있다.
그러면, 상기 클릭 생성부(335)의 클릭 수행(예컨대, "click()"의 실행)에 의해 상기 네비게이션부(200)에서 "navigate()"가 호출되게 되는데, 도 2에 도시된 바와 같은 디스패치 아이디 중 제일 처음 제어권이 오는 "DISPID_BEFORENAVIGATE2"에서 상기 클릭 생성부(335)는 상기 네비게이션부(200)가 클릭에 의해 상응하는 동작을 수행하면서 찾아진 링크에 대해 네비게이션 취소기능(예컨대, "navigate cancel")을 발생시키고 해당 링크에 대한 정보를 상기 링크 저장부(400)로 출력할 수 있다.
물론, 상기 클릭 생성부(335)는 클릭에 의해 상기 네비게이션부(200)가 클릭에 상응하는 동작을 수행하면서, 전술한 바와 같이 다운로드 창 또는 제어창이 로딩되는 경우 또는 팝업 창과 같은 새 창이 로딩되는 경우 등에는 상기 로딩부(310)에서 설명한 바와 같은 방법을 통해 인터럽트 요소를 방지할 수 있음은 물론이다.
또한, 클릭에 상응하는 동작을 수행하면서, 태그 분석을 통해 직접 링크 정보를 얻을 수 있는 경우에는 해당 링크 정보를 상기 링크 저장부(400)로 출력할 수도 있다.
도 7은 본 발명의 실시 예에 따른 클릭부의 데이터 흐름을 설명하기 위한 플로우 챠트를 나타낸다.
도 1 및 도 7을 참조하여 상기 클릭부(300)의 동작을 다시 설명하면, 상기 클릭부(300)는 상기 네비게이션부(200)에 로딩된 페이지로부터(S200) 스크립트를 추출하고(S210), 추출된 스크립트로부터 스크립트 함수를 추출할 수 있다(S220). 그러면, 추출된 상기 스크립트 함수들 중 상기 제1인터럽트 함수에 해당되는 경우(S230), 상기 제1인터럽트 함수를 오버라이딩 함수로 변환하고(S240) 이 과정을 모든 스크립트 함수에 대해 수행할 수 있다(S250).
그러면, 상기 제1인터럽트 함수를 더 이상 포함하지 않게된 상기 로딩된 페이지에 포함된 구성요소를 검색하고(S260), 검색결과 클릭요소인 경우(S280), 클릭을 수행할 수 있다(S280). 이 과정을 모든 클릭요소들 또는 소정의 조건을 만족하는 모든 클릭요소들에 대해 수행할 수 있다(S290).
각각의 클릭요소를 수행하면 상기 네비게이션부(200)는 클릭에 상응하는 동작을 수행(즉, 네비게이션)하게 되는데, 이 때 얻게 되는 링크 정보를 상기 클릭부(300)는 상기 링크 저장부(400)로 출력할 수 있다.
상기 링크 저장부(400)는 상기 제어부(300)로부터 출력된 링크 정보를 수신하고, 수신된 링크 정보를 저장할 수 있는 모든 메모리 장치를 포함할 수 있다.
본 발명의 실시 예에 따른 링크 추출 방법은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록모듈를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 하드디스크, 광 데이터 저장모듈 등도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
상술한 바와 같이 본 발명에 따른 링크 추출 방법은 태그 분석을 통한 링크 추출뿐만 아니라, 스크립트에 의한 프로그램 가능한 링크도 추출할 수 있고, 스크립트 엔진이 업데이트 되는 경우에도 추가적인 비용이 발생하지 않으면서 링크를 추출할 수 있는 효과가 있다.

Claims (24)

  1. URL을 수신하고 수신된 상기 URL에 상응하는 페이지를 네비게이션(navigation)하는 네비게이션부;
    링크 정보를 저장하는 링크 저장부; 및
    상기 네비게이션부가 네비게이션 할 상기 URL에 상응하는 페이지를 상기 네비게이션부에 로딩시키고, 상기 네비게이션부에 로딩된 페이지에서 클릭 요소들을 검색하여 검색된 클릭요소들 각각에 대한 클릭을 직접 수행하면서 얻게 되는 제1링크 정보를 상기 링크 저장부로 출력하는 제어부를 구비하는 링크 추출 모듈.
  2. 제1항에 있어서, 상기 네비게이션부는,
    상기 URL에 상응하는 상기 페이지를 네비게이션 하는 메인 네비게이션부; 및
    상기 페이지를 네비게이션 하는 중에 로딩되는 새창을 네비게이션하기 위한 서브 네비게이션부를 구비하는 링크 추출 모듈.
  3. 제 2항에 있어서, 상기 제어부는,
    상기 네비게이션부가 네비게이션 할 상기 페이지를 상기 네비게이션부에 로딩시키고, 상기 페이지를 로딩하는 동안에 로딩(loading)될 수 있는 취소될 객체의 로딩을 취소하는 로딩부; 및
    상기 네비게이션부에 로딩된 페이지에서 상기 클릭 요소들을 검색하여 상기 검색된 클릭요소들 각각에 대한 클릭을 수행하면서 얻게 되는 상기 제1링크 정보를 상기 링크 저장부로 출력하는 클릭부를 구비하는 링크 추출 모듈.
  4. 제3항에 있어서, 상기 클릭부는,
    상기 로딩된 페이지에 포함된 스크립트 함수를 추출하는 스크립트 추출부;
    상기 스크립트 추출부에서 추출된 스크립트 함수들 중 제1인터럽트 함수를 인터럽트가 발생하지 않도록 오버라이딩 함수로 변환하는 스크립트 변환부; 및
    상기 스크립트 변환부에 의해 변환된 함수를 포함하는 상기 로딩된 페이지에 포함된 상기 클릭 요소들을 검색하고, 검색된 상기 클릭 요소들 각각에 대한 클릭을 수행하는 클릭 생성부를 구비하는 링크 추출 모듈.
  5. 제 3항에 있어서, 상기 로딩부는,
    상기 URL에 상응하는 페이지를 로딩하는 동안에 직접 얻을 수 있는 제2링크 정보를 수집하고, 수집된 제2링크 정보를 상기 링크 저장부로 출력하는 링크 추출 모듈.
  6. 제 3항에 있어서, 상기 클릭부는,
    상기 네비게이션부에 로딩된 페이지로부터 직접 얻을 수 있는 제3링크 정보를 수집하고, 수집된 제3링크 정보를 상기 링크 저장부로 출력하는 링크 추출 모듈.
  7. 제 3항에 있어서, 상기 취소 객체는,
    상기 로딩부가 상기 URL에 상응하는 상기 페이지를 로딩하는 동안에 로딩 될 수 있는 다운로드 창 또는 제어창 중 적어도 하나를 포함하는 객체인 링크 추출 모듈.
  8. 제 3항에 있어서, 상기 로딩부는,
    상기 로딩부가 상기 URL에 상응하는 상기 페이지를 로딩하는 동안에 상기 새 창이 로딩되는 경우,
    상기 새창을 상기 서브 네비게이션부에 로딩하고, 상기 서브 네비게이션부에 로딩된 페이지로부터 얻을 수 있는 링크 정보를 상기 링크 저장부로 출력하는 링크 추출 모듈.
  9. 제 3항에 있어서, 상기 로딩부는,
    상기 로딩부가 상기 URL에 상응하는 상기 페이지를 로딩하는 동안에 스크립트에 의한 제2인터럽트 함수가 실행되는 경우,
    상기 제2인터럽트 함수에 상응하고 인터럽트가 발생하지 않도록 재정의된 재정의 함수를 실행하는 링크 추출 모듈.
  10. 제 4항에 있어서,
    상기 스크립트 추출부는 상기 로딩된 페이지에 포함된 스크립트를 추출하고,
    추출된 스크립트에 포함된 문자열 중 스크립트 함수 신택스(syntax)와 일치하는 문자열을 스크립트 함수로 추출하는 링크 추출 모듈.
  11. 제 10항에 있어서,
    상기 스크립트 변환부는 상기 스크립트 추출부에서 추출된 스크립트 함수들 중에서 상기 제1인터럽트 함수를 검색하고,
    검색된 상기 제1인터럽트 함수를 상기 오버라이딩 함수로 변환하는 링크 추출 모듈.
  12. 제 4항에 있어서, 상기 클릭 생성부는,
    상기 스크립트 변환부에 의해 변환된 함수를 포함하는 상기 로딩된 페이지에서 온클릭(on-click) 이벤트를 포함하는 상기 클릭 요소들을 검색하고, 검색된 상기 클릭 요소들 각각에 대한 클릭(click) 이벤트를 수행하여 클릭을 수행하는 링크 추출 모듈.
  13. 제어부가 네비게이션부에 상기 네비게이션부가 네비게이션 할 URL에 상응하는 페이지를 로딩시키는 단계;
    상기 네비게이션부에 로딩된 상기 페이지에서 클릭 요소들을 검색하여 검색된 클릭 요소들 각각에 대한 클릭을 직접 수행하면서 제1링크 정보를 획득하는 단계; 및
    획득된 상기 제1링크 정보를 저장하는 단계를 구비하는 링크 추출 방법.
  14. 제13항에 있어서, 상기 링크 추출 방법은,
    상기 제어부가 상기 네비게이션부에 상기 페이지를 로딩하는 동안에 로딩(loading)될 수 있는 취소 객체의 로딩을 취소하는 단계를 더 구비하는 링크 추출 방법.
  15. 제13항에 있어서, 상기 제1링크 정보를 획득하는 단계는,
    상기 제어부가 상기 네비게이션부에 로딩된 페이지에 포함된 스크립트 함수를 추출하는 단계;
    추출된 스크립트 함수들 중 제1인터럽트 함수를 인터럽트가 발생하지 않도록 오버라이딩 함수로 변환하는 단계; 및
    변환된 상기 오버라이딩 함수를 포함하는 상기 로딩된 페이지에 포함된 상기 클릭 요소들을 검색하고, 검색된 상기 클릭 요소들 각각에 대한 클릭을 수행하는 단계를 구비하는 링크 추출 방법.
  16. 제 13항에 있어서, 상기 링크 추출 방법은,
    상기 제어부가 상기 페이지를 로딩하는 동안에 직접 얻을 수 있는 제2링크 정보를 수집하고, 수집된 제2링크 정보를 저장하는 단계를 더 구비하는 링크 추출 방법.
  17. 제 13항에 있어서, 상기 링크 추출 방법은,
    상기 제어부가 상기 네비게이션부에 로딩된 페이지로부터 직접 얻을 수 있는 제3링크 정보를 수집하고, 수집된 제3링크 정보를 저장하는 단계를 더 구비하는 링크 추출 방법.
  18. 제 13항에 있어서, 상기 URL에 상응하는 상기 페이지를 로딩시키는 단계는,
    상기 제어부가 상기 페이지를 로딩하는 동안에 로딩 될 수 있는 다운로드 창 또는 제어창 중 적어도 하나를 포함하는 객체를 로딩 취소시키는 단계를 구비하는 링크 추출 방법.
  19. 제 13항에 있어서, 상기 URL에 상응하는 상기 페이지를 로딩시키는 단계는,
    상기 제어부가 상기 페이지를 상기 네비게이션부에 포함된 메인 네비게이션부에 로딩하는 동안에 새 창이 로딩되는 경우,
    상기 제어부는 상기 새 창을 상기 네비게이션부에 포함된 서브 네비게이션부에 로딩하는 단계;
    상기 서브 네비게이션부에 로딩된 페이지로부터 얻을 수 있는 링크 정보를 저장하는 단계를 구비하는 링크 추출 방법.
  20. 제 13항에 있어서, 상기 URL에 상응하는 상기 페이지를 로딩시키는 단계는,
    상기 제어부가 상기 페이지를 로딩하는 동안에 스크립트에 의한 제2인터럽트 함수가 실행되는 경우,
    상기 제어부는 상기 제2인터럽트 함수에 상응하고 인터럽트가 발생하지 않도록 재정의된 재정의 함수를 실행하는 단계를 구비하는 링크 추출 방법.
  21. 제 15항에 있어서, 상기 스크립트 함수를 추출하는 단계는
    상기 제어부가 상기 네비게이션부에 로딩된 페이지에 포함된 스크립트를 추출하는 단계; 및
    추출된 스크립트에 포함된 문자열 중 스크립트 함수 신택스(syntax)와 일치하는 문자열을 스크립트 함수로 추출하는 단계를 구비하는 링크 추출 방법.
  22. 제 21항에 있어서, 상기 오버라이딩 함수로 변환하는 단계는,
    상기 제어부가 추출된 상기 스크립트 함수 중에서 상기 제1인터럽트 함수를 검색하는 단계; 및
    검색된 상기 제1인터럽트 함수를 상기 오버라이딩 함수로 변환하는 단계를 구비하는 링크 추출 방법.
  23. 제 22항에 있어서, 상기 검색된 상기 클릭 요소들 각각에 대한 클릭을 수행하는 단계는,
    변환된 상기 오버라이딩 함수를 포함하는 상기 로딩된 페이지에서 온클릭(on-click) 이벤트를 포함하는 상기 클릭 요소들을 검색하는 단계; 및
    검색된 상기 클릭 요소들 각각에 대한 클릭(click) 이벤트를 수행하여 클릭을 수행하는 단계를 구비하는 링크 추출 방법.
  24. 제 13항 내지 제 23항 중 어느 한 항에 기재된 방법을 수행하기 위한 프로그램을 기록한 기록매체.
KR1020070022742A 2007-03-08 2007-03-08 링크 추출 모듈 및 그 방법 KR100924159B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070022742A KR100924159B1 (ko) 2007-03-08 2007-03-08 링크 추출 모듈 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070022742A KR100924159B1 (ko) 2007-03-08 2007-03-08 링크 추출 모듈 및 그 방법

Publications (2)

Publication Number Publication Date
KR20080082217A KR20080082217A (ko) 2008-09-11
KR100924159B1 true KR100924159B1 (ko) 2009-10-28

Family

ID=40021636

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070022742A KR100924159B1 (ko) 2007-03-08 2007-03-08 링크 추출 모듈 및 그 방법

Country Status (1)

Country Link
KR (1) KR100924159B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000036692A (ko) * 2000-03-25 2000-07-05 김성하 이미지 북마크와 와우스크립트 언어를 이용한 웹사이트정보 표현 기술과 광고 기법 구현
WO2001057663A2 (en) 2000-02-04 2001-08-09 America Online Incorporated Optimized delivery of web application code
KR20030090140A (ko) * 2002-05-21 2003-11-28 주식회사 케이티 전화 자동 연결을 지원하는 웹 검색 결과 표시 방법
US7043482B1 (en) 2000-05-23 2006-05-09 Daniel Vinsonneau Automatic and secure data search method using a data transmission network

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001057663A2 (en) 2000-02-04 2001-08-09 America Online Incorporated Optimized delivery of web application code
KR20000036692A (ko) * 2000-03-25 2000-07-05 김성하 이미지 북마크와 와우스크립트 언어를 이용한 웹사이트정보 표현 기술과 광고 기법 구현
US7043482B1 (en) 2000-05-23 2006-05-09 Daniel Vinsonneau Automatic and secure data search method using a data transmission network
KR20030090140A (ko) * 2002-05-21 2003-11-28 주식회사 케이티 전화 자동 연결을 지원하는 웹 검색 결과 표시 방법

Also Published As

Publication number Publication date
KR20080082217A (ko) 2008-09-11

Similar Documents

Publication Publication Date Title
US10796076B2 (en) Method and system for providing suggested tags associated with a target web page for manipulation by a useroptimal rendering engine
US8706704B2 (en) Method and system for creating semantic relationships using hyperlinks
US8424004B2 (en) High performance script behavior detection through browser shimming
US20120259833A1 (en) Configurable web crawler
US20120131485A1 (en) System and method for providing interactive tab management in tabbed browsers
US20140047359A1 (en) Mechanism for adding new search modes to user agent
CN102768683B (zh) 一种图片信息的搜索方法及搜索装置
US20150317288A1 (en) Method and system to maintain a web page
US8893097B2 (en) Tool configured to build cross-browser toolbar
EP3848824A1 (en) Landing page processing method, apparatus, device and medium
US9330074B2 (en) Style sheet speculative preloading
US10558631B2 (en) Enhancing textual searches with executables
US10963274B2 (en) Dynamic help system using HTML based application framework
US11971932B2 (en) Mechanism for web crawling e-commerce resource pages
US20040205587A1 (en) System and method for enumerating arbitrary hyperlinked structures in which links may be dynamically calculable
KR100924159B1 (ko) 링크 추출 모듈 및 그 방법
US20070233737A1 (en) System for determining whether screen displayed by program satisfies specification
Grover et al. A framework for text mining services
KR101117171B1 (ko) 검색 서비스를 위해 데이터를 생성하기 위한 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체
US11210454B2 (en) Method for preparing documents written in markup languages while implementing a user interface for dealing with data of an information system
KR101020306B1 (ko) 검색서비스 제공방법 및 그 장치
US20200089713A1 (en) System and method for crawling
CA2538504C (en) Method and system for obtaining script related information for website crawling
Bhoir et al. Web Crawling on News Web Page using Different Frameworks
Tao Ontology-based active repository system

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee