0

私が取り組んでいるこのプロジェクトについて、いくつかのアドバイスが必要です。

私は現在、ヘッダーを要求するプロジェクトに取り組んでいます。削られたヘッダーの例を、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に保存されており、プラットフォームの変更を検出するためにitemsinの一部を使用することに興味があります。、、headersのようなヘッダーはすべて、私の意見では将来相互参照するために使用できるヘッダーです。たとえば、「今日」のWebサイトが、このスクレーパーを2か月後に再度実行したときにアップグレードされた場合、このWebサイトでアップグレードが行われたと考える理由があります。serverx-powered-byx-aspnet-versionMicrosoft-IIS/7.0Microsoft-IIS/7.5

私の質問は-これを行うための最良の方法は何ですか?

2つのコレクションを作成する必要があります-collectionTodaycollectionInTwoMonths

次に、、、および?ごとに整数の変更/増分の正規表現検索を実行しserverます。x-powered-byx-aspnet-version

この実装はどのように機能しますか?

任意の提案をいただければ幸いです。

4

1 に答える 1

1

これを行うにはいくつかの方法があります。1つは、ご提案のとおり、期間ごとに異なるコレクションを作成し、各コレクションのヘッダーのグループ全体を保存することです。find次に、各期間のURLを実行し、結果のアプリケーション側を比較して、結果をレポートすることにより、違いを照会できます。

もう1つの方法は、「differences」コレクションを格納することです。このコレクションには、各時点で、そのときのヘッダーと最後に照会したときのヘッダーとの違いが保持されていました。これには、ヘッダーをクエリするたびにより多くのアプリケーションロジックが必要になりますが、実際に違いをクエリするときの作業は少なくなります。これが私がすることです。

編集

これらが必要な3つのヘッダーである場合、それは良いことだと思います。違いを見つけるためにクエリを実行するときは、比較するために各ヘッダーが最後に変更された時刻を見つける必要があることに注意してください。これは、コレクション内の最後のエントリ(時間的に)が正しい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
于 2013-03-25T15:14:02.697 に答える