0

私は Web クローラーを作成して#!いて、取得したページで URL に遭遇したときに Google が行うことをしたいと考えています。URL に #! がない場合 Google は、最終的にフェッチしてインデックスに登録するページのリストにそれを追加しますが、#! Google の「Ajax クロール入門」ドキュメントで説明されているとおりです。

それを含む URL を Google が認識すると、その URL を#!変更し、変更された URL に対して HTTP GET を実行し、取得したページを#!(実際に取得した URL ではなく) 含まれている URL を取得したかのようにインデックスに登録します。完全に説明されていない変換をエミュレートしようとしています。

参照されたページは、Google が URL を変更するために何をするかを部分的に説明し、元の URL が何であったかを知り、その URL の下にインデックスを作成したいデータを返すことができるように、変換を元に戻す方法を Web サイトの作成者に伝え#!ます。ページが言うことの1つは次のとおりです。Note: The crawler escapes certain characters in the fragment during the transformation. To retrieve the original fragment, make sure to unescape all %XX characters in the fragment. More specifically, %26 should become &, %20 should become a space, %23 should become #, and %25 should become %, and so on.

言及されている「変換」は、に続くテキスト内のいくつかの特殊文字を置き換えてエスケープすること#!です。このテキストは、変更された URL の後に続くテキストで %XX のエスケープを (部分的に) 解除することで、変換を元に戻すよう Web サイトの作成者に指示します。問題は、Google が要求するのと同じ置換 URL をクローラーが要求できるように、どの特殊文字をエスケープする必要があるかをどのように知ることができるかということです。?_escaped_fragment=#!?_escaped_fragment=

引用された段落で、Google はエスケープするものをいくつか挙げていますが、最後の「など」は、エスケープされた文字の完全なリストがより長いことを示唆していますが、完全には説明されていません。

理論的には、すべての文字 (文字も含む) を %XX としてエスケープできますが、すべての Web サイトがそれを正しく処理する可能性は高くありません。クローラーが Google と同じ URL をリクエストするように、Google がエスケープする文字を特定するにはどうすればよいですか?

(着信 URL をログに記録する Web サイトを制御し、Google にクロールさせることができた場合、#! の後に特殊文字を含む URL を多数含むページを作成し、URL を調べて何がエスケープされたかを確認できます。と?_escaped_fragment_=-- しかし、答えを得るために偽の Web サイトを設定する必要があるのでしょうか?)

4

1 に答える 1

0

エスケープされる文字の詳細が次のドキュメントにあるという事実を完全に見逃していました。

完全な「Ajax クロール」仕様

他の人がその仕様を見つける必要がある場合に備えて、この質問をここに残しておきます。

于 2013-10-08T18:52:59.890 に答える