当前位置:  开发笔记 > 编程语言 > 正文

为什么我不能用LWP :: Simple获取维基百科页面?

如何解决《为什么我不能用LWP::Simple获取维基百科页面?》经验,为你挑选了5个好方法。

我正在尝试使用LWP :: Simple获取维基百科页面,但它们并没有回来.这段代码:

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

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

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

我是否应该使用其他名称来引用维基百科页面?

这可能会发生什么?



1> Jesse Beder..:

显然维基百科阻止了L​​WP ::简单请求: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;



2> zigdon..:

您也可以在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");



3> 小智..:

我用LWP:RobotUA而不是解决了这个问题LWP::UserAgent.您可以阅读以下文档.您应该修改的差异不大.

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



4> 小智..:

因为Wikipedia阻止了LWP :: Simple使用的HTTP用户代理字符串.

如果您尝试使用它,您将获得"403 Forbidden" - 响应.

尝试使用LWP :: UserAgent模块解决此问题,设置agent-attribute.



5> Jonathan Swa..:

另请参阅与Mediawiki相关的CPAN模块 - 这些模块旨在打击Mediawiki网站(维基百科是其中之一),并且可能比简单的LWP给你更多的花里胡哨.

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

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有