11

LWP::Simpleを使用してウィキペディアのページを取得しようとしていますが、戻ってきません。このコード:

#!/usr/bin/perl
use strict;
use LWP::Simple;

print get("http://en.wikipedia.org/wiki/Stack_overflow");

何も印刷しません。しかし、たとえば、他の Web ページを使用するとhttp://www.google.com、問題なく動作します。

ウィキペディアのページを参照するために使用すべき他の名前はありますか?

ここで何が起こっているのでしょうか?

4

5 に答える 5

18

どうやらウィキペディアは LWP::Simple リクエストをブロックしているようです: http://www.perlmonks.org/?node_id=695886

代わりに次のように動作します。

#!/usr/bin/perl
use strict;
use LWP::UserAgent;

my $url = "http://en.wikipedia.org/wiki/Stack_overflow";

my $ua = LWP::UserAgent->new();
my $res = $ua->get($url);

print $res->content;
于 2008-08-23T20:33:00.787 に答える
11

また、LWP::Simple モジュールで UA を設定することもできます - $ua 変数をインポートするだけで、基礎となる UserAgent を変更することができます:

use LWP::Simple qw/get $ua/;
$ua->agent("WikiBot/0.1");
print get("http://en.wikipedia.org/wiki/Stack_overflow");
于 2008-09-16T14:44:30.207 に答える
6

LWP:RobotUAの代わりに使用してこの問題を解決しましLWP::UserAgentた。以下の文書を読むことができます。変更する必要がある大きな違いはありません。

http://lwp.interglacial.com/ch12_02.htm

于 2012-11-02T09:43:05.307 に答える
5

Mediawiki関連のCPANモジュールも参照してください-これらはMediawikiサイト(ウィキペディアがその1つです)をヒットするように設計されており、単純なLWPよりも多くのベルとホイッスルを提供する可能性があります。

http://cpan.uwinnipeg.ca/search?query=Mediawiki&mode=dist

于 2008-09-16T14:23:25.420 に答える
5

ウィキペディアが LWP::Simple で使用される HTTP ユーザーエージェント文字列をブロックしているためです。

使用しようとすると、「403 Forbidden」応答が返されます。

LWP::UserAgent モジュールを試して、agent-attribute を設定して、これを回避してください。

于 2008-08-23T20:48:56.897 に答える