2008-08-23 11 views
10

Estoy intentando buscar páginas de Wikipedia usando LWP::Simple, pero no vuelven. Este código:¿Por qué no puedo buscar páginas de wikipedia con LWP :: Simple?

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

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

no imprime nada. Pero si uso alguna otra página web, digamos http://www.google.com, funciona bien.

¿Hay algún otro nombre que debería usar para referirme a las páginas de Wikipedia?

¿Qué podría estar pasando aquí?

+0

Nota que está recibiendo un "403 Forbidden" error. – Bryce

Respuesta

18

solicitudes parecer Wikipedia bloques LWP :: Simple: http://www.perlmonks.org/?node_id=695886

las siguientes obras: en lugar

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

Recibo el error ** 500 No me puedo conectar con en.wikipedia.org:443** para la URL wiki dada, sin embargo, para la página de inicio de stackoverflow http://stackoverflow.com, da 403. He añadido '$ ua-> agent (" WikiBot/0.1 ");' antes de llamar al método 'get', esto funcionó bien para muchos sitios, incluido stackoverflow. Pero todavía da error en la página wiki, el mismo error que se menciona arriba. –

+0

Agregó '$ ua = LWP :: UserAgent-> new (ssl_opts => {verify_hostname => 0}); 'y este error ** 500 no se puede conectar a en.wikipedia.org:443** solucionado. Puede ayudar a alguien más. –

4

Debido a que Wikipedia es el bloqueo de la cadena de agente de usuario HTTP utilizado por LWP :: Simple.

Recibirá la respuesta "403 Prohibido" si intenta usarlo.

Pruebe el módulo LWP :: UserAgent para solucionar este problema, estableciendo el agente-atributo.

12

también puede simplemente establecer la UA en el módulo LWP :: Simple - solo debe importar la variable $ ua, y que va a permitir modificar el agente de usuario subyacente:

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

Resolví este problema usando LWP:RobotUA en vez de LWP::UserAgent. Puedes leer el documento a continuación. No hay muchas diferencias que deba modificar.

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

Cuestiones relacionadas