[英]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.