Открыть URL в Linux, используя Perl (или любой другой язык)? - PullRequest
1 голос
/ 09 мая 2011

Я новичок в сценариях Perl.Я хотел проанализировать текстовый файл, закодировать проанализированный текст и прикрепить в URL.Пожалуйста, укажите мне правильные ресурсы, если вы знаете какие-либо.Это моя главная проблема.

Теперь я пытаюсь запустить URL и сохранить его в текстовом файле, используя модуль LWP в Perl.Я использовал следующую программу для подключения к Google, но я получаю сообщение об ошибке «401 НЕСАНКЦИОНИРОВАН».Пожалуйста, помогите - где я должен предоставить свои данные для аутентификации пользователя и пароль?

#!/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;

Ответы [ 2 ]

1 голос
/ 10 мая 2011

Как я уже упоминал в своем комментарии к вашему вопросу, WWW::Mechanize - это оболочка для LWP модулей.Он похож на то, как можно использовать браузер, и автоматически обрабатывает файлы cookie.

Чтобы ответить на ваш прямой вопрос, он предоставляет один метод: credentials to:

Укажите учетные данные, которые будут использоваться для базовой аутентификации 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 делает его более удобным для работы.Среднее значение.

0 голосов
/ 09 мая 2011

Вам лучше использовать LWP::Simple, так как это довольно простая и простая операция, пример использования:

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