【问题标题】:Open URL in Linux using Perl (or any language)?使用 Perl(或任何语言)在 Linux 中打开 URL?
【发布时间】:2011-05-08 21:37:28
【问题描述】:

我是 Perl 脚本的新手。我想解析一个文本文件,对解析后的文本进行编码并附加在 URL 中。如果您知道任何资源,请指出我正确的资源。这是我的主要问题。

现在我尝试使用 Perl 中的 LWP 模块运行 URL 并将其保存在文本文件中。我使用以下程序连接到 Google,但出现“401 UNAUTHORIZED”错误。请帮忙 - 我应该在哪里提供我的用户身份验证详细信息和密码?

#!/usr/bin/perl
    use strict;
    use warnings;
    use LWP::UserAgent;
    use HTTP::Request::Common qw(GET);
    use HTTP::Cookies;

    my $ua = LWP::UserAgent->new;

    # Define user agent type
    $ua->agent('Mozilla/8.0');

    # Cookies
    $ua->cookie_jar(
        HTTP::Cookies->new(
            file => 'mycookies.txt',
            autosave => 1
        )
    );

    # Request object
    my $req = GET 'http://www.google.com';

    # Make the request
    my $res = $ua->request($req);

    # Check the response
    if ($res->is_success) {
        print $res->content;
    } else {
        print $res->status_line . "\n";
    }

    exit 0;

【问题讨论】:

  • 您的代码对我有用。一些快速的 cmets:(1)你为什么要创建一个请求对象而不是调用 $ua->get('google.com')? (2) 为了使整个操作更容易,您可以查看WWW::Mechanize 模块,该模块使用LWP,但以更类似于浏览器的方式包装它(search.cpan.org/perldoc?WWW::Mechanize)

标签: perl shell lwp


【解决方案1】:

正如我在对您的问题的评论中提到的,WWW::MechanizeLWP 模块的包装器。它的使用类似于人们使用浏览器的方式,它会自动处理 cookie。

为了解决您的直接问题,它提供的一种方法是credentials

提供用于所有站点和领域的 HTTP 基本身份验证的凭据,直至另行通知。

这是一个简单的示例,与您自己的类似。用户凭据行已被注释,因为我不希望 google 需要它们。

#!/usr/bin/perl

use strict;
use warnings;

use WWW::Mechanize;

my $mech = WWW::Mechanize->new();
#$mech->credentials('username','password');

$mech->get('http://www.google.com');

if ($mech->success) {
  $mech->dump_text();
  #$mech->save_content('file.html');
} else {
  print $mech->status();
}

总而言之,LWP 让您能够浏览网页,WWW::Mechanize 让您更方便地按自己的意愿行事。

【讨论】:

    【解决方案2】:

    你最好使用LWP::Simple,因为这是一个非常简单直接的操作,用法示例:

     use LWP::Simple;
     $content = get("http://www.sn.no/");
     die "Couldn't get it!" unless defined $content;
    

    【讨论】:

      猜你喜欢
      • 2019-05-26
      • 1970-01-01
      • 2012-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 2011-05-21
      • 2020-01-05
      相关资源
      最近更新 更多