簡單的節點工作程序,用於爬行站點地圖以保持 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