Question

J'essaie de récupérer des pages Wikipédia en utilisant LWP : Simple, mais ils ne reviendront pas.Ce code :

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

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

n'imprime rien.Mais si j'utilise une autre page Web, disons http://www.google.com, ça fonctionne bien.

Existe-t-il un autre nom que je devrais utiliser pour faire référence aux pages Wikipédia ?

Que peut-il se passer ici ?

Était-ce utile?

La solution

Apparemment, Wikipédia bloque LWP :: requêtes simples : http://www.perlmonks.org/?node_id=695886

Ce qui suit fonctionne à la place :

#!/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;

Autres conseils

Vous pouvez également simplement définir l'UA sur le module LWP::Simple - importez simplement la variable $ua, et cela vous permettra de modifier le UserAgent sous-jacent :

use LWP::Simple qw/get $ua/;
$ua->agent("WikiBot/0.1");
print get("http://en.wikipedia.org/wiki/Stack_overflow");

J'ai résolu ce problème en utilisant LWP:RobotUA au lieu de LWP::UserAgent.Vous pouvez lire le document ci-dessous.Il n'y a pas beaucoup de différences que vous devriez modifier.

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

Parce que Wikipédia bloque la chaîne d'agent utilisateur HTTP utilisée par LWP :: Simple.

Vous obtiendrez une réponse "403 Forbidden" si vous essayez de l'utiliser.

Essayez le module LWP::UserAgent pour contourner ce problème, en définissant l'attribut d'agent.

Consultez également les modules CPAN liés à Mediawiki - ils sont conçus pour accéder aux sites Mediawiki (dont wikipedia est l'un) et peuvent vous donner plus de cloches et de sifflets qu'un simple LWP.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top