Algolia 색인을 최신 상태로 유지하기 위해 사이트맵을 크롤링하는 간단한 노드 작업자입니다.
색인화할 실제 텍스트 콘텐츠를 찾기 위해 간단한 CSS 선택기를 사용합니다.
이 앱은 Algolia의 라이브러리를 사용합니다.
정기적으로 전체 웹사이트를 크롤링하려면 이 스크립트를 crontab을 통해 실행해야 합니다.
<loc>
노드(예: urlset/url/loc
)가 포함되어야 합니다.npm i algolia-webcrawler -g
git clone [email protected]:DeuxHuitHuit/algolia-webcrawler.git
git clone https://github.com/DeuxHuitHuit/algolia-webcrawler.git
algolia-webcrawler --config config.json
프로젝트 루트로 cd하고 node app
실행합니다.
구성은 config.json 파일을 통해 수행됩니다.
--config 플래그를 사용하여 다른 곳에 저장된 config.json 파일을 선택할 수 있습니다.
node app --config my-config.json
최소한 config.json을 편집하여 'app', 'cred', 'indexname' 및 하나 이상의 'sitemap' 개체 옵션에 값을 설정할 수 있습니다. 사이트맵이 여러 개인 경우 모두 나열하세요. 하위 사이트맵은 크롤링되지 않습니다.
대부분의 옵션이 필요합니다. 별도로 명시하지 않는 한 기본값은 제공되지 않습니다.
앱의 이름입니다.
Algolia 자격 증명 개체입니다. 'cred.appid' 및 'cred.apikey'를 참조하세요.
귀하의 Algolia 앱 ID입니다.
생성된 Algolia API 키입니다.
웹사이트에 대한 각 요청 간의 단순 지연 시간은 밀리초입니다.
항목이 업데이트되지 않고 유지될 수 있는 최대 시간(밀리초)입니다. 실행할 때마다 앱은 이전 항목을 검색하여 삭제합니다. 이전 항목을 제거하지 않으려면 이 값을 0으로 설정하십시오.
오래된 항목을 삭제할 때 적용되는 필터 문자열입니다. 업데이트되지 않는 오래된 기록을 보관하고 싶을 때 유용합니다. 오래되고 필터와 일치하는 기록만 삭제됩니다.
Algolia로 전송되는 레코드의 최대 크기(바이트)입니다. 기본값은 10,000이지만 다양한 계획에 따라 달라질 수 있습니다.
레코드가 너무 큰 경우(maxRecordSize 기준) 크롤러는 텍스트 키에서 값을 제거합니다. 이 속성을 사용하여 레코드가 너무 클 때 정리해야 하는 키를 구성합니다.
색인과 관련된 다양한 값을 포함하는 객체입니다.
귀하의 색인 이름입니다.
Algolia의 Index#setSetting
메소드에 대한 인수 역할을 하는 객체입니다.
해당 주제에 대한 Algolia의 문서를 읽어보세요. 이 메소드에 대해 문서화된 모든 유효한 속성을 사용할 수 있습니다.
인덱싱 가능한 속성을 정의하는 문자열 배열입니다. 즉, 해당 속성에 대해 전체 텍스트 검색이 수행됩니다. 가능한 속성의 전체 목록은 저장된 개체 섹션을 참조하세요.
필터링 가능한 속성을 정의하는 문자열 배열입니다. 즉, 해당 속성을 사용하여 일부 레코드가 반환되지 않도록 제외할 수 있습니다. 가능한 속성의 전체 목록은 저장된 개체 섹션을 참조하세요.
이 배열에는 사이트맵 개체 목록이 포함되어야 합니다.
사이트맵은 url과 lang이라는 두 가지 문자열 속성을 가진 매우 간단한 개체입니다. 'url' 속성은 이 사이트맵의 정확한 URL입니다. 'lang' 속성은 사이트맵에 있는 URL이 사용하는 기본 언어를 명시해야 합니다.
다양한 http 옵션을 포함하는 개체입니다.
노드의 username:password
형식으로 된 인증 문자열입니다. 인증이 필요하지 않은 경우에도 빈 문자열을 지정해야 합니다.
페이지 HTML에서 콘텐츠를 찾기 위한 CSS 선택기가 포함된 개체입니다.
페이지 제목에 대한 CSS 선택기입니다.
페이지 설명을 위한 CSS 선택기입니다.
페이지 이미지에 대한 CSS 선택기입니다.
페이지 제목에 대한 CSS 선택기입니다.
"키" 속성에 대한 CSS 선택기입니다. 원하는 대로 사용자 정의 키를 추가할 수 있습니다.
선택기는 사용자 정의 속성을 지정할 수 있는 긴 형식(예: 개체)을 사용하여 정의할 수도 있습니다.
값을 찾을 속성의 이름입니다. 기본값은 ['콘텐츠', '값']입니다.
사용할 실제 CSS 선택기입니다.
확인할 최대 노드 수입니다.
색인을 생성해서는 안 되는 요소를 찾기 위한 CSS 선택기가 포함된 객체입니다. 해당 CSS 선택기는 각 노드와 일치하며 모든 상위 항목을 확인하여 상위 항목이 제외되지 않았는지 확인합니다.
페이지 텍스트에 대해 제외된 요소의 CSS 선택기입니다.
"키" 속성에 대해 제외된 요소의 CSS 선택기입니다. 키는 선택기[키]에 사용된 키와 일치해야 합니다.
포맷터 문자열을 포함하는 객체입니다. 관련 CSS 선택기로 얻은 원래 결과에서 해당 값이 제거됩니다.
페이지 제목에서 제거할 문자열입니다. 문자열 배열일 수도 있습니다.
지정된 키에서 제거할 문자열입니다. 문자열 배열일 수도 있습니다.
값의 형식을 지정하는 데 사용되는 구문 분석 함수입니다. 지원되는 유형은 "integer", "float", "boolean" 및 "json"입니다.
지정된 키에 삽입된 기본값입니다. 값이 거짓인 경우 설정됩니다.
기록을 저장하기 전에 사용자 정의 코드를 로드할 자바스크립트 파일 목록입니다. 유일한 요구 사항은 다음 인터페이스를 구현하는 것입니다. 여기서 record
는 저장할 개체이고 데이터는 html입니다.
module . exports = ( record , data ) => {
record . value_from_plugin = 'Yay!' ;
} ;
모든 URL은 블랙리스트의 모든 항목과 비교하여 확인됩니다. 전체 URL 또는 해당 경로 구성 요소가 블랙리스트에 있으면 색인이 생성되지 않습니다.
Algolia 서버에 저장되는 객체는 다음과 같습니다.
{
date : new Date ( ) ,
url : 'http://...' ,
objectID : shasum . digest ( 'base64' ) ,
lang : sitemap . lang ,
http : { } ,
title : '' ,
description : '' ,
image : '' ,
text : [ '...' ]
}
한 가지 주목해야 할 점은 원본 텍스트 노드 -> 실제 값 관계를 유지하려고 시도했기 때문에 텍스트가 배열이라는 것입니다. Algolia는 이것을 잘 처리합니다.
Algolia에 저장된 모든 URL 후에 웹 서버에 다시 핑을 게시하도록 하나의 URL을 설정할 수 있습니다. 웹 서버는 다음 정보가 포함된 게시물을 받게 됩니다.
result=[success|error]
action=[update|delete]
url=the url inserted
last-modified=[the http header value]
source=algolia-crawler
인덱싱은 실행될 때마다 자동으로 수행됩니다. 인덱싱 작동 방식을 조정하려면 index.settings 구성 옵션을 참조하세요.
MIT
Deux Huit Huit가 몬트리올에서 사랑을 담아 만들었습니다.
저작권 (c) 2014-2019