Для примера разберем, как выкачиваются
все истории за день с сайта "Анекдоты из
России" (http://www.anekdot.ru).
Сайт постоянно обновляется, поэтому имеет
смысл выкачивать все истории за вчера, там
содержимое уже меняться не будет. Адрес
нужной нам страницы строится следующим
образом :
сайт анекдотов/an/an год месяц/o год месяц день.html
причем от года берутся только 2 последние
цифры, а месяц и день дополняется до 2
символов нулями слева, если это необходимо.
Таким образом, страница http://www.anekdot.ru/an/an0206/o020629.html
содержит все истории за 29 июня 2002 года.
Небольшое лирическое отступление для тех,
кто только начал осваивать Perl.
Как скачать WEB страницу ?
require LWP::UserAgent; $ua = LWP::UserAgent->new;
$ua-> proxy(['http', 'ftp'],
'адрес прокси-сервера');
$req = new HTTP::Request('GET' =>
'страница для скачивания');
if ($res->is_success)
{
$page = $res->content;
}
Как отправить письмо с прикрепленными
файлами?
require MIME::Lite;
$msg = MIME::Lite->new( From =>'Ваш@Адрес.com',
To =>'Адрес@Получателя.com', Subject =>'Тема
сообщения', Type => 'multipart/related');
$msg->attach( Type
=>'text/plain; charset=windows-1251', Data => текст письма);
$msg->attach( Type => 'image/gif', Path => путь к файлу,
Filename =>'img.gif');
$msg->send();
Рассмотрим по шагам работу программы.
Определяем URL документа
Скачиваем содержимое WEB страницы
Ищем и скачиваем все содержащиеся на
странице изображения
Меняем ссылки относительно документа на
их абсолютное значение
Присоединяем внешние файлы CSS,JavaScript
Кодируем все изображения и собираем MIME
объект
Отсылаем получившееся письмо по
электронной почте
Техническую реализацию скрипта я буду
описывать схематически, если что будет не
понятно - смотрите исходник.
C ANEKDOT.RU все истории за вчера. Вычисляем
дату - полночь вчерашнего дня. Дополняем
дату нулями слева.
$sutki=24*60*60;
($tek_day,$tek_month,$tek_year)=(localtime)[3,4,5];
$in1=timelocal(0,0,0,$tek_day,$tek_month,$tek_year);
$in2=$in1-$sutki;
($tek_day,$tek_month,$tek_year)=(localtime($in2))[3,4,5];
$tek_month++; $tek_year+=1900;
if ($tek_month<10)
{
$tek_month="0".$tek_month
}
if ($tek_day<10)
{
$tek_day="0".$tek_day;
}
$an_year=substr($tek_year, 2, 2);
Страница для скачивания. Определяем адрес
страницы согласно приведенного шаблона.
Скачиваем содержимое страницы используя
модуль LWP.
if ($url_page && $url_page=~/^(https?|ftp|file|nntp):///)
{
my $req = new HTTP::Request('GET' => $url_page);
my $res = $ua->request($req);
$gabarit = $res->content;
}
Подключаем внешний CSS и JavaScript. Тут все
очень упрощенно показано, но разобраться
можно - качаем файл со скриптами и
подставляем его в нужное место HTML документа.
внешний CSS = '
";
документ HTML =~s/]*?)href="?([^" ]*)"?([^>]*)>/
внешний CSS /iegmx; внешний JavaScript = '
";
документ HTML =~s/
Варез портал существует с 2003 - 2008 / Хостинг предоставили MacHoster.Ru