简单的节点工作程序,用于爬行站点地图以保持 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
形式。如果不需要auth,仍然需要指定一个空字符串。
包含 CSS 选择器的对象,用于查找 html 页面中的内容。
页面标题的 CSS 选择器。
用于页面描述的 CSS 选择器。
页面图像的 CSS 选择器。
页面标题的 CSS 选择器。
“key”属性的 CSS 选择器。您可以根据需要添加自定义键。
选择器也可以使用长形式(即作为对象)来定义,这允许在其上指定自定义属性。
要查找值的属性的名称。默认值为 ['内容', '值']。
实际使用的 CSS 选择器。
要检查的最大节点数。
包含 CSS 选择器的对象,用于查找不得索引的元素。这些 CSS 选择器与每个节点相匹配,并针对其所有父节点进行检查,以确保不排除其父节点。
页面文本的排除元素的 CSS 选择器。
“key”属性排除元素的 CSS 选择器。键必须与选择器[key] 中使用的键匹配。
包含格式化字符串的对象。它们的值将从通过关联的 CSS 选择器获得的原始结果中删除。
要从页面标题中删除的字符串。也可以是字符串数组。
要从指定键中删除的字符串。也可以是字符串数组。
用于格式化值的解析函数。支持的类型有“integer”、“float”、“boolean”和“json”。
为指定键插入的默认值。如果该值是假的,则将被设置。
用于在保存记录之前加载自定义代码的 JavaScript 文件列表。唯一的要求是实现以下接口,其中record
是要保存的对象,data是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 处理得很好。
可以设置一个 url,以便在 Algolia 中的每个保存的 url 后将 ping 发送回 Web 服务器。网络服务器将收到包含以下信息的帖子:
result=[success|error]
action=[update|delete]
url=the url inserted
last-modified=[the http header value]
source=algolia-crawler
每次运行时都会自动完成索引。要调整索引的工作方式,请参阅index.settings配置选项。
麻省理工学院
Deux Huit Huit 在蒙特利尔用爱制造
版权所有 (c) 2014-2019