[英]Suggestions needed for using Node.js and MongoDB to detect platform changes of a site
我需要我正在從事的這個項目的一些建議。
我目前正在研究要求標頭的項目; 下面是采用Mongo文檔樣式的抓取標頭的示例:
{
"url": "google.com",
"statusCode": 301,
"headers": {
"location": "http://www.google.com/",
"content-type": "text/html; charset=UTF-8",
"date": "Mon, 25 Mar 2013 13:50:31 GMT",
"expires": "Wed, 24 Apr 2013 13:50:31 GMT",
"cache-control": "public, max-age=2592000",
"server": "gws",
"content-length": "219",
"x-xss-protection": "1; mode=block",
"x-frame-options": "SAMEORIGIN"
}
}
該項目使用Node.JS,Javascript和MongoDB。 目前,我在MongoDB中存儲了數千個此類響應,並且我對使用headers
某些items
檢測平台更改感興趣。 諸如server
, x-powered-by
, x-aspnet-version
類的標頭都是將來我可以用來交叉引用的標頭。 例如,如果我在兩個月后再次運行此刮板時,“今天”的網站已從Microsoft-IIS/7.0
升級到Microsoft-IIS/7.5
,則有理由相信此網站已進行了升級。
我的問題是-最好的方法是什么?
我應該創建兩個collections- collectionToday
和collectionInTwoMonths
嗎?
然后,對每個server
, x-powered-by
和x-aspnet-version
的整數更改/增量進行正則表達式搜索嗎?
如何執行這項工作?
任何建議將不勝感激。
有幾種方法可以做到這一點。 如您建議的那樣,可以在每個時間段創建不同的集合,並為每個存儲整個標題組。 然后,可以通過運行每個時間段的find
網址,比較結果應用程序端並報告結果來查詢差異。
另一種方法是存儲一個“差異”集合,該集合針對每個時間點保留標題然后與上一次查詢的標題之間的差異。 每次查詢標題時,這將需要更多的應用程序邏輯,但是在實際查詢差異時會減少工作量。 這就是我要做的。
編輯
如果這是您需要的三個標題,那么我認為這聽起來不錯。 請記住,當您查詢以查找差異時,您需要查找每個標頭更改的最后一次進行比較,這意味着集合中的最后一個條目(按時間順序)既與正確的url相對應,又在其中包含標頭的條目題。
用於區分的偽代碼:
for every url you want:
query collection by url, sorting by date
for each header:
find the last document with that field
if the header value in that document and the current header are different:
add the field to the new document
add the new document, holding the url, date, and all different fields, to the collection
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.