2011-05-08 19 views
1

我是Perl脚本新手。我想解析一个文本文件,对解析的文本进行编码并附加到URL中。如果您知道的话,请指出正确的资源。这是我的主要问题。使用Perl(或任何语言)在Linux中打开URL?

现在我尝试使用Perl中的LWP模块来运行URL并将其保存在文本文件中。我使用下面的程序连接到谷歌,但我得到“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; 
+0

你的代码适合我。一些快速的评论:(1)你为什么要做一个请求对象而不是调用'$ ua-> get('google.com')'? (2)为了使整个操作更容易,你可以查看'WWW :: Mechanize'模块,它使用'LWP',但是以更类似浏览器的方式包装它(http://search.cpan.org/perldoc? WWW ::机械化) – 2011-05-10 00:03:43

回答

-2

您更好地使用LWP::Simple因为这是一个非常简单明了的操作,使用示例:

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

正如我在我的评论都提到你的问题,WWW::MechanizeLWP模块的包装。它的使用类似于如何使用浏览器,并且它自动执行cookie处理。

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

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

这是一个快速的例子,类似于你自己的。用户凭证行被评论,因为我不指望谷歌需要他们。

#!/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使它更方便你是什么意思。

相关问题