0

誰かがこれで私を助けてくれることを願っています。ドメインから一意の URL のリストをコンパイルし、それらの一意の URL ごとに HTML データを処理し、それらのページに関する統計データを生成するスパイダー アプリケーションを PHP で作成しています。

私の問題は、私がスパイダーした URL が私のリストに本当に固有のものであるかどうか、より具体的には、パラメーター値が異なる場合を知ることに関係しています。

例として、私のスパイダーによって収集された 2 つの URL を次に示します。これらは技術的に一意ですが (「replytocom」のパラメーター値が異なります)、同じページに誘導されます。

これらのリンクは、同じ応答フォームを使用しながら特定のコメントに簡単に返信できるようにする、ブログにあるようなものです。ここで問題が発生します。どちらも同じページの URL であり、再処理したくないデータです (元のページの URL だけを処理したいのですが)。すべてのコメント セクションでこの種のリンクを使用するブログの場合、これは私のスパイダーにとって大きなデータの問題になります。

私の質問は、異なるパラメーター値を持つ 2 つのリンクが同じページを参照しているかどうかを確認する方法はありますか? 疑問に思ったのは、たとえば、パラメータ値が異なる YouTube 動画は、実際には異なるページを意味するということです。自分でページを開いて確認する以外に、2 つの URL が同じページを読み込んでいるかどうかをプログラムで確認する方法はありますか?

これについて何か助けていただければ幸いです。

4

4 に答える 4

2

Web ページには、この質問に答えるタグが含まれているはず<meta rel="canonical">です。
存在する場合、これはこのページの「公式」URL を指定します。同じページへのさまざまな URL で同じである必要があります。

このタグがない場合は、運が悪いです。

于 2013-08-05T15:21:29.050 に答える
0

これはうまくいくはずです

function PagesAreIdentical($pointer1, $pointer2) {
    $headerArray1 = get_headers($pointer1);
    $headerArray2 = get_headers($pointer2):
    if($headerArray1['Content-Length'] == $headerArray2['Content-Length'])
    {
        if(file_get_contents($pointer1) != file_get_contents($pointer2))
            return false;
        else
            return true;
    }

    else return false;
}
于 2013-08-05T16:14:08.780 に答える