无法使用perl的LWP代理检索网页的内容

时间:2011-10-20 20:56:27

标签: perl lwp

我有一个可以检索特定网页内容的程序,但有些网页出现错误:

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);

谢谢!

=====

更新

  1. 是的,这是我正在使用的实际代码。是否有明确的选项可以启用以下内容 重定向?
  2. 是的wget有效
  3. 由于

2 个答案:

答案 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))'