Пример использования модулей LWP и HTML::Tree
Дмитрий Николаев,
В статье речь пойдёт об использовании модулей и , причём сделано это будет на реальном примере, работу которого Вы можете посмотреть здесь: .
Сама идея написать скриптик - возникла после того, как встал вопрос о том, что раздел "книги" сайта - надоело дополнять/редактировать и т.д. вручную. Захотелось это дело автоматизировать, сделать поиск и т.д. Первая идея, которая возникла, - это было создание мини интернет-магазина, куда вносились бы книги и т.д. Но, это опять таки требовало присутствия человека. И тогда, я подумал, а почему бы не сделать скриптик, который бы скачивал нужную страницу с , парсил бы её, как мне надо, и передавал бы броузеру. Методом решения стали модули(пакеты модулей :)) и .
В данный момент скрипт выполняет следующее: при запросе - "смотрит в свой кэш" и в случае, если ничего там не находит, то производит скачивание нужной страницы с Озона, парсинг её и складирование в кэш + вывод броузеру... Естественно, при парсинге меняются некоторые ссылки, в частности ссылки перехода на следующую страницу результатов поиска и т.д.
Итак, давайте приступим к разбору кода:
1 #!/usr/bin/perl
2 use strict;
# далее грузим модули, которые нам понадобятся
3 use LWP;
4 use CGI;
5 use CGI::Carp qw(fatalsToBrowser);
6 use HTML::TreeBuilder;
7 use Lingua::DetectCharset;
8 use Convert::Cyrillic;
9 use URI::Escape;
10 my $flock_allow=1; # рарешать ли блокировку файлов
11 my $mainhost='http://perl.dp.ua'; # Ваш хост...
12 my $books_cache_dir = 'dir_for_cache'; # директория, в которой будут хранится кэшированные файлы
13 my $coi = new CGI;
14 print $coi->header(); # выводим заголовки
15 if(!(-d "./$books_cache_dir")){ # проверяем существование директории для кэш-файлов