1

Perl の特定のプロジェクトで、LWP::UserAgent を使用して Web サイトにアクセスできるようにする「パーサー」をいくつか作成しました。ただし、ある Web サイトで問題が発生しています。Cookie をオフにして、ブラウザでそのサイトにアクセスした場合とまったく同じように動作するため、目的のページが表示される代わりに、次のメッセージが表示されたページが表示されます。 Cookie をオンにする必要があります。私のスクリプトのコード全体を以下に示します。何か案は?前もって感謝します。

(私の質問に対処しているように見える次の URL を見たことに注意してください。残念ながら、その提案に基づいて動作するスクリプトを取得できませんでした: Cookies in perl lwp。)

use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Cookies;
my $useragent = LWP::UserAgent->new;
$useragent->cookie_jar(HTTP::Cookies->new);
my $request = HTTP::Request->new(GET => "http://www.the-site-im-trying-to-parse.com");
my $response = $useragent->request($request);
print "Content-type: text/html\n\n";
print $response->as_string;
4

3 に答える 3

1

あなたがしているのはHTTP経由でhtmlデータをダウンロードすることだけなので、結果を1つに表示することを決定するまで、ブラウザの操作はありません。そうは言っても、HTTPサーバーには、Cookieが有効になっているクライアントからのリクエストであるかどうかを知る方法がありません。したがって、そうしても、実際には結果を変更することはできません。

WWW:Mechanizeモジュールは、Webサイトを簡単に移動するのに役立ちますが、直面している問題を修正することはできません。したがって、実際には問題の解決には役立ちません。

より現実的には、ファイルをダウンロードしてブラウザに表示すると、正しく機能しないクライアント側のJavaScriptコードがあります。これは、javascriptコードに実装されているクロスドメインポリシーを破るなど、さまざまな可能性があります。アクセスしているURLを提供しないと、言うことはできません。

于 2012-02-04T21:17:11.437 に答える
1

WWW::Mechanize モジュールの使用を検討しましたか? デフォルトでは、Cookie を自動的に収集します。また、非常に便利なメソッドがたくさん含まれているため、少し使いやすくなっています。

于 2012-02-04T18:07:41.293 に答える
-1

一時ストレージに設定してみてくださいcookie_jar(空のhashrefを指定してください)。

$useragent->cookie_jar( {} );
于 2012-02-04T19:00:42.663 に答える