PERL: БИБЛИОТЕКА ПРОГРАММИСТА



              

PERL: БИБЛИОТЕКА ПРОГРАММИСТА - стр. 671


die could not get $URL\n , }

Однако в этом случае вы не сможете определить причину ошибки. В этой и других нетривиальных ситуациях возможностей LWP::Simple оказывается недо­статочно.

В примере 20.1 приведена программа выборки документа по URL Если попыт­ка оказывается неудачной, программа выводит строку с кодом ошибки. В против­ном случае печатается название документа и количество строк в его содержимом. Мы используем четыре модуля от LWP.

LWP::UserAgent

Модуль создает виртуальный броузер. Объект, полученный при вызове конст­руктора new, используется для дальнейших запросов. Мы задаем для своего агента имя «Schmozilla/v9.14 Platinum», чтобы Web-мастер мучился от зависти при про­смотре журнала.

HTTP:: Request

Модуль создает запрос, но не отправляет его. Мы создаем запрос GET и присваи­ваем фиктивный URL для запрашивающей страницы.

HTTP:: Response

Тип объекта, возвращаемый при фактическом выполнении запроса пользова­тельским объектом. Проверяется на предмет ошибок и для получения искомого содержимого.

URI::Heuristic

Занятный маленький модуль использует Netscape-подобные алгоритмы для рас­ширения частичных URL. Например:

Частичный URL              Предположение

perl                              http://www.perl.com
www.oreilly.com             http://www.oreilly.com
ftp.funet.fi                      ftp://ftp.funet.fi
/etc/passwd________ file:/ctc/passwd_______

Хотя строки в левом столбце не являются правильными URL (их формат не от­вечает спецификации URI), Netscape пытается угадать, каким URL они соответ­ствуют. То же самое делают и многие другие броузеры.

Исходный текст программы приведен в примере 20.1.


706   Глава 20 • Автоматизация в Web Пример 20.1. titlebytes

#!/usr/bin/perl  -w

# titlebytes - определение названия и размера документа

use LWP::UserAgent;

use HTTP::Request;

use HTTP::Response;

use URI::Heuristic;

my $raw_url = shift                             or die "usage:  $0 url\n";

my $url = URI: .'Heuristic: :uf_urlstr($raw_url);




Содержание  Назад  Вперед