Trabalhador de nó simples que rastreia mapas de sites para manter um índice Algolia atualizado.
Ele usa seletores CSS simples para encontrar o conteúdo real do texto a ser indexado.
Este aplicativo usa a biblioteca da Algolia.
Este script deve ser executado via crontab para rastrear todo o site em intervalos regulares.
<loc>
, ou seja, 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 para a raiz do projeto e execute node app
.
A configuração é feita através do arquivo config.json.
Você pode escolher um arquivo config.json armazenado em outro lugar usando o sinalizador --config.
node app --config my-config.json
No mínimo, você pode editar config.json para definir valores para as seguintes opções: 'app', 'cred', 'indexname' e pelo menos um objeto 'sitemap'. Se você tiver vários sitemaps, liste todos eles: os subsitemaps não serão rastreados.
A maioria das opções é obrigatória. Nenhum padrão é fornecido, salvo indicação em contrário.
O nome do seu aplicativo.
Objeto de credenciais Algolia. Consulte 'cred.appid' e 'cred.apikey'.
Seu ID do aplicativo Algolia.
Sua chave API Algolia gerada.
Atraso simples entre cada solicitação feita ao site em milissegundos.
O número máximo de milissegundos que uma entrada pode permanecer sem ser atualizada. Após cada execução, o aplicativo irá procurar entradas antigas e excluí-las. Se você não deseja se livrar das entradas antigas, defina esse valor como 0.
Uma string de filtro que será aplicada ao excluir entradas antigas. Útil quando você deseja manter registros antigos que não serão atualizados. Somente os registros antigos e que correspondam ao filtro serão excluídos.
O tamanho máximo em bytes de um registro a ser enviado para Algolia. O padrão é 10.000, mas pode variar de acordo com planos diferentes.
Quando o registro for muito grande (com base em maxRecordSize), o rastreador removerá valores da chave de texto. Utilize este atributo para configurar quais chaves devem ser removidas quando o registro for muito grande.
Um objeto contendo vários valores relacionados ao seu índice.
Seu nome de índice.
Um objeto que atuará como argumento para o método Index#setSetting
do Algolia.
Por favor, leia a documentação da Algolia sobre esse assunto. Qualquer atributo válido documentado para este método pode ser usado.
Uma matriz de string que define quais atributos são indexáveis, o que significa que a pesquisa de texto completo será executada neles. Para obter uma lista completa de atributos possíveis, consulte a seção Objeto armazenado.
Uma matriz de string que define quais atributos são filtráveis, o que significa que você pode usá-los para excluir o retorno de alguns registros. Para obter uma lista completa de atributos possíveis, consulte a seção Objeto armazenado.
Esta matriz deve conter uma lista de objetos de mapa de site.
Um sitemap é um objeto muito simples com duas propriedades String: url e lang. A propriedade 'url' é o URL exato deste mapa do site. A propriedade 'lang' deve explicitar o idioma principal usado pela url encontrada no mapa do site.
Um objeto contendo diferentes opções http.
A string de autenticação, no formato username:password
do nó. Se você não precisar de autenticação, ainda precisará especificar uma String vazia.
Um objeto contendo seletores CSS para encontrar o conteúdo das páginas html.
Seletor CSS para o título da página.
Seletor CSS para a descrição da página.
Seletor CSS para a imagem da página.
Seletor CSS para o título da página.
Seletor CSS para a propriedade "key". Você pode adicionar chaves personalizadas como desejar.
Os seletores também podem ser definidos usando o formato longo (ou seja, como um objeto), que permite especificar propriedades personalizadas nele.
Nome dos atributos para procurar valores. O padrão é ['conteúdo', 'valor'].
O seletor CSS real a ser usado.
O número máximo de nós a serem verificados.
Um objeto contendo seletores CSS para localizar elementos que não devem ser indexados. Esses seletores CSS são correspondidos para cada nó e são verificados em relação a todos os seus pais para garantir que nenhum de seus pais seja excluído.
Seletor CSS de elementos excluídos para o texto da página.
Seletor CSS de elementos excluídos para propriedade "chave". A chave deve corresponder àquela usada nos seletores[chave].
Um objeto que contém uma string de formatador. Seus valores são removidos do resultado original obtido com o seletor CSS associado.
A string a ser removida do título da página. Também pode ser uma matriz de strings.
A string a ser removida da chave especificada. Também pode ser uma matriz de strings.
A função de análise usada para formatar o valor. Os tipos suportados são “integer”, “float”, “boolean” e “json”.
O valor padrão inserido para a chave especificada. Será definido se o valor for falso.
Uma lista de arquivos javascript para carregar o código personalizado antes de salvar o registro. O único requisito é implementar a seguinte interface, onde record
é o objeto a ser salvo e data é o html.
module . exports = ( record , data ) => {
record . value_from_plugin = 'Yay!' ;
} ;
Todos os URLs são verificados em relação a todos os itens da lista negra. Se o URL completo ou seu componente de caminho estiver na lista negra, ele não será indexado.
O objeto armazenado no servidor da Algolia é o seguinte
{
date : new Date ( ) ,
url : 'http://...' ,
objectID : shasum . digest ( 'base64' ) ,
lang : sitemap . lang ,
http : { } ,
title : '' ,
description : '' ,
image : '' ,
text : [ '...' ]
}
Uma coisa a notar é que o texto é um array, já que tentamos preservar o nó do texto original -> relação valor real. Algolia lida com isso muito bem.
Um URL pode ser configurado para enviar um ping de volta para um servidor web após cada URL salvo no Algolia. O servidor web receberá uma postagem com esta informação:
result=[success|error]
action=[update|delete]
url=the url inserted
last-modified=[the http header value]
source=algolia-crawler
A indexação é feita automaticamente, a cada execução. Para ajustar o funcionamento da indexação, consulte a opção de configuração index.settings.
MIT
Feito com amor em Montreal por Deux Huit Huit
Direitos autorais (c) 2014-2019