我有一个可以检索特定网页内容的程序,但有些网页出现错误:
Can't get http://www.sitename.com
302 Moved Temporarily at geturl.pl line 30.
该网站在浏览器上显示正常。
想知道我能做些什么来获取内容?
我的代码非常简单,标准使用LWP并且在大多数页面上都能正常工作。
my $browser = LWP::UserAgent->new(
agent=>'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)',
keep_alive=>'1'
);
...
my $response = $browser->get($url);
谢谢!
=====
更新
由于
答案 0 :(得分:0)
LWP::UserAgent文档表明用户代理上的request
方法将自动跟踪重定向。从本文档中不清楚get
是否使用相同的逻辑。
您可以通过创建HTTP::Request对象来使用请求方法。此示例使用request
方法:
perl -MData::Dumper -MHTTP::Request -MLWP -e '
$request=HTTP::Request->new(GET => "http://www.google.com");
$ua=LWP::UserAgent->new;
print Dumper $ua->request($request);'
答案 1 :(得分:0)
我刚看过a talk about some of various modules that can do HTTP in Perl的幻灯片;也许你可以尝试其中一个,比如HTTP::Tiny:
perl -MHTTP::Tiny -E '$res=HTTP::Tiny->new->get("http://www.sitename.com/"); say join "\n", map { $res->{$_} } (qw(response status reason content))'