Trabajador de nodo simple que rastrea mapas de sitio para mantener actualizado un índice de Algolia.
Utiliza selectores CSS simples para encontrar el contenido de texto real para indexar.
Esta aplicación utiliza la biblioteca de Algolia.
Este script debe ejecutarse mediante crontab para poder rastrear todo el sitio web a intervalos regulares.
<loc>
, es decir 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 a la raíz del proyecto y ejecute node app
.
La configuración se realiza a través del archivo config.json.
Puede elegir un archivo config.json almacenado en otro lugar usando el indicador --config.
node app --config my-config.json
Como mínimo, puede editar config.json para establecer valores para las siguientes opciones: 'app', 'cred', 'indexname' y al menos un objeto 'sitemap'. Si tiene varios mapas de sitio, enumérelos todos: los mapas de sitio secundarios no se rastrearán.
Se requieren la mayoría de las opciones. No se proporcionan valores predeterminados, a menos que se indique lo contrario.
El nombre de tu aplicación.
Objeto de credenciales de Algolia. Consulte 'cred.appid' y 'cred.apikey'.
Su ID de la aplicación Algolia.
Su clave API de Algolia generada.
Retraso simple entre cada solicitud realizada al sitio web en milisegundos.
El número máximo de milisegundos que puede vivir una entrada sin actualizarse. Después de cada ejecución, la aplicación buscará entradas antiguas y las eliminará. Si no desea deshacerse de las entradas antiguas, establezca este valor en 0.
Una cadena de filtro que se aplicará al eliminar entradas antiguas. Útil cuando desea conservar registros antiguos que no se actualizarán. Sólo se eliminarán los registros que sean antiguos y coincidan con el filtro.
El tamaño máximo en bytes de un registro que se enviará a Algolia. El valor predeterminado es 10 000, pero puede variar según los diferentes planes.
Cuando el registro es demasiado grande (según maxRecordSize), el rastreador eliminará valores de la clave de texto. Utilice este atributo para configurar qué claves se deben eliminar cuando el registro es demasiado grande.
Un objeto que contiene varios valores relacionados con su índice.
Su nombre de índice.
Un objeto que actuará como argumento para el método Index#setSetting
de Algolia.
Lea la documentación de Algolia sobre ese tema. Se puede utilizar cualquier atributo válido documentado para este método.
Una matriz de cadenas que define qué atributos son indexables, lo que significa que se realizará una búsqueda de texto completo en ellos. Para obtener una lista completa de posibles atributos, consulte la sección Objeto almacenado.
Una matriz de cadenas que define qué atributos se pueden filtrar, lo que significa que puede usarlos para excluir la devolución de algunos registros. Para obtener una lista completa de posibles atributos, consulte la sección Objeto almacenado.
Esta matriz debe contener una lista de objetos del mapa del sitio.
Un mapa de sitio es un objeto realmente simple con dos propiedades de cadena: URL y idioma. La propiedad 'url' es la URL exacta de este mapa del sitio. La propiedad 'lang' debe explicar el idioma principal utilizado por la URL que se encuentra en el mapa del sitio.
Un objeto que contiene diferentes opciones http.
La cadena de autenticación, en formato username:password
del nodo. Si no necesita autenticación, aún deberá especificar una cadena vacía.
Un objeto que contiene selectores CSS para encontrar el contenido en las páginas html.
Selector CSS para el título de la página.
Selector CSS para la descripción de la página.
Selector CSS para la imagen de la página.
Selector CSS para el título de la página.
Selector CSS para la propiedad "clave". Puede agregar claves personalizadas como desee.
Los selectores también se pueden definir usando la forma larga (es decir, como un objeto), que permite especificar propiedades personalizadas en él.
Nombre de los atributos para buscar valores. El valor predeterminado es ['contenido', 'valor'].
El selector de CSS real a utilizar.
El número máximo de nodos a comprobar.
Un objeto que contiene selectores CSS para encontrar elementos que no deben indexarse. Esos selectores de CSS coinciden para cada nodo y se comparan con todos sus padres para asegurarse de que ninguno de sus padres esté excluido.
Selector CSS de elementos excluidos para el texto de la página.
Selector CSS de elementos excluidos para la propiedad "clave". La clave debe coincidir con la utilizada en los selectores[clave].
Un objeto que contiene una cadena formateadora. Sus valores se eliminan del resultado original obtenido con el selector CSS asociado.
La cadena que se eliminará del título de la página. También puede ser una serie de cadenas.
La cadena que se eliminará de la clave especificada. También puede ser una serie de cadenas.
La función de análisis utilizada para formatear el valor. Los tipos admitidos son "entero", "flotante", "booleano" y "json".
El valor predeterminado insertado para la clave especificada. Se establecerá si el valor es falso.
Una lista de archivos javascript para cargar código personalizado antes de guardar el registro. El único requisito es implementar la siguiente interfaz, donde record
es el objeto a guardar y datos es el html.
module . exports = ( record , data ) => {
record . value_from_plugin = 'Yay!' ;
} ;
Todas las URL se comparan con todos los elementos de la lista negra. Si la URL completa o su componente de ruta está en la lista negra, no se indexará.
El objeto almacenado en el servidor de Algolia es el siguiente
{
date : new Date ( ) ,
url : 'http://...' ,
objectID : shasum . digest ( 'base64' ) ,
lang : sitemap . lang ,
http : { } ,
title : '' ,
description : '' ,
image : '' ,
text : [ '...' ]
}
Una cosa a tener en cuenta es que el texto es una matriz, ya que intentamos preservar la relación del nodo de texto original -> valor real. Algolia maneja esto muy bien.
Se puede configurar una URL para publicar un ping a un servidor web después de cada URL guardada en Algolia. El servidor web recibirá un post con esta información:
result=[success|error]
action=[update|delete]
url=the url inserted
last-modified=[the http header value]
source=algolia-crawler
La indexación se realiza automáticamente, en cada ejecución. Para modificar el funcionamiento de la indexación, consulte la opción de configuración index.settings.
MIT
Hecho con amor en Montreal por Deux Huit Huit
Derechos de autor (c) 2014-2019