1

簡単なWebクローラーを開発して、いくつかのWebサイトからページを取得し、それらを実際の状態で維持したいと考えています。このサイトの一部では、各リンクにセッション ID があり、Cookie にセッション ID をまったく保存していません。したがって、サイトを数回解析すると、解析テーブルには、セッション ID のみが異なる複製ページが含まれます。

私の質問は次のとおりです。すべてのリンクからセッションIDを削除するにはどうすればよいですか?何か賢いアイデアはありますか? 私はphpで開発していますが、言葉のアルゴリズムだけでも、他のすべてのプラットフォームのソリューションが役立ちます。

4

3 に答える 3

2

例として、正規表現を使用したい場合、これはURLからすべてのセッションを削除します(32文字である限り、これは私が推測する通常のことです):

$url = preg_replace('#([\w\d]+=[\w\d]{32})#',null,$url);

于 2010-10-21T10:22:26.953 に答える
1

parse_str()およびhttp_build_query()を使用して、URLパラメーターを抽出、クリア、および再構築できます。正規表現を使用することもできますが、URLパラメーターの配列を使用する方が簡単だと思います。

parse_str('session=123445&data=example&action=demo', $url_params);
// $url_params is now an associative array of the url params
unset($url_params['session'], $url_params['action']);
$new_url_param_string = http_build_query($url_params);
于 2010-10-21T10:27:20.823 に答える
1

セッションキーのマッチングにはいつでも正規表現を使用できます。ほとんどの場合、正規表現が一般的です (PHPSESSID)。とにかく、何かをクロールしていて、Cookie を受け入れて操作したい場合は、cURLを使用する必要があります( curl_setopt COOKIE、COOKIEFILE、および COOKIEJAR を参照)。

于 2010-10-21T10:15:25.930 に答える