2008-08-23 76 views
10

我正在尝试使用LWP::Simple来获取Wikipedia页面,但他们没有回来。此代码:为什么我无法使用LWP :: Simple获取维基百科页面?

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

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

不打印任何东西。但如果我使用其他网页,例如http://www.google.com,它工作正常。

我还有其他一些名字可以用来指维基百科页吗?

这里可能会发生什么?

+0

请注意,您会收到“403 Forbidden”错误。 – Bryce 2013-08-13 17:21:35

回答

18

显然维基百科块LWP ::简单的要求: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; 
+0

我得到错误** 500无法连接到en.wikipedia.org:443**给定的维基URL,但为了stackoverflow主页http://stackoverflow.com,它给了403。 我已经添加`$ ua-> agent(“WikiBot/0.1”);`在调用`get`方法之前,这对很多网站都很有用,包括stackoverflow。但它仍然给维基页面上的错误,上面提到的同样的错误。 – 2016-04-18 07:12:40

4

因为维基百科是由堵LWP使用HTTP用户代理字符串::简单。

如果您尝试使用它,您将得到一个“403禁止”响应。

尝试使用LWP :: UserAgent模块来解决此问题,即设置代理属性。

12

您也可以只设置在LWP的UA ::单模 - 刚刚导入$ UA变量,它会允许你修改底层的UserAgent:

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