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

发布于 2024-12-10 23:39:47 字数 581 浏览 0 评论 0原文

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

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 可以工作,

谢谢

I have a program that can retrieve the content of a specific webpage, but there are some pages where I get an error:

Can't get http://www.sitename.com
302 Moved Temporarily at geturl.pl line 30.

The site displays fine on a browser.

Wonder what I could do to get the content?

My code is very simple, the standard use of LWP and works fine on most pages.

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

Thanks!

================

update:

  1. Yes this is the actual code I'm using. Is there an explicit option to turn on following
    redirects?
  2. Yes wget works

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

笑梦风尘 2024-12-17 23:39:47

LWP::UserAgent 文档表明请求用户代理上的方法将自动遵循重定向。从本文档中不清楚 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);'

The LWP::UserAgent docs indicate that the request method on the user agent will follow redirects automatically. It's unclear from this documentation if get uses the same logic.

You could use the request method by creating an HTTP::Request object. This example uses the request method:

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);'
烦人精 2024-12-17 23:39:47

我刚刚阅读了 有关一些可以执行的各种模块的演讲的幻灯片Perl 中的 HTTP;也许你可以尝试其他之一,例如 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))'

I just read slides from a talk about some of various modules that can do HTTP in Perl; maybe you could try one of the others, like 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))'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文