nixp.ru v3.0

21 января 2017,
суббота,
22:40:42 MSK

DevOps с компанией «Флант»
Vneo написал 27 марта 2006 года в 15:35 (341 просмотр) Ведет себя неопределенно; открыл 1 тему в форуме, оставил 2 комментария на сайте.

Модуль грабит каталог машин с сайта http://www.autonews.ru/catalog/

Он работал до 2004 года а потом все… :(

Вот скрипт:

#!/usr/bin/perl -w

##!perl -w

my $rus = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя’;

my $eng = 'abvgdeozziyklmnoprstufhscsstimeuaabvgdeozziyklmnoprstufhscsstimeua’;

print «Content-type: text/html\n\n»;

print '

';

use Time::Local 'timelocal_nocheck’;

use File::Path;

use LWP::UserAgent;

use HTTP::Request;

use HTTP::Response;

my $resdir_ru = 'cats/0/domestic.cat’;

my $resdir_en = 'cats/0/inomarki.cat’;

my $preurl = 'http://www.autonews.ru’;

my $starturl = '/catalogue.shtml’;

my $rettime = 180;

my $expdays = 7;

my $firmmask = '\/catalog\/firms\.shtml\?’;

my $modmask = '\/catalog\/model\.shtml\?’;

my $mdfmask = '\/catalog\/modif\.shtml\?’;

my $photomask = '\/catalog\/photo\.shtml\?’;

my $vphotomask = 'photo\.shtml\?’;

my ($gfirm, $gmod);

unlink(«heist_an.log»);

my $bt = time;

my @t = (localtime($bt))[0..5];

my $ft = sprintf(«%04d/%02d/%02d %02d:%02d:%02d», $t[5] + 1900, $t[4] + 1, $t[3], $t[2], $t[1], $t[0]);

plog(«$ft: начало обработки»);

worm($starturl);

my $et = time;

@t = (localtime($et))[0..5];

$ft = sprintf(«%04d/%02d/%02d %02d:%02d:%02d», $t[5] + 1900, $t[4] + 1, $t[3], $t[2], $t[1], $t[0]);

@t = (gmtime($et — $bt))[0..2];

my $pt = sprintf(«%02d:%02d:%02d», $t[2], $t[1], $t[0]);

plog(«$ft: успешное завершение, время обработки $pt\n»);

#####################################################################

sub plog {

my ($w, $f) = ($_[0], $_[0]);

$w =~ s/ / /g;

open (LOG, «>>heist_an.log»);

print $w.»

»;

print LOG $f.«\n»;

close (LOG);

}

sub getn {

my $url = $_[0];

my $ua = LWP::UserAgent->new;

my $request = HTTP::Request->new(GET => $url);

my $response = $ua->request($request);

my $st = time;

while ((not $response->is_success) && ((time — $st) <= $rettime) && ($response->code() != 404)) {

$ua = LWP::UserAgent->new;

$request = HTTP::Request->new(GET => $url);

$response = $ua->request($request);

}

if ($response->code() == 404) {

return undef;

} elsif (not $response->is_success) {

my $et = time;

my @t = (localtime($et))[0..5];

my $ft = sprintf(«%04d/%02d/%02d %02d:%02d:%02d», $t[5] + 1900, $t[4] + 1, $t[3], $t[2], $t[1], $t[0]);

plog(«$ft: исчерпано время повторов запроса\n»);

die;

}

return $response->content;

}

sub worm {

mkdir($resdir_ru);

open(F, «>$resdir_ru/title»);

print F 'Отечественные модели’;

close(F);

mkdir($resdir_en);

open(F, «>$resdir_en/title»);

print F 'Иномарки’;

close(F);

plog(«запрос каталога: $_[0]»);

my $cont = getn($preurl.$_[0]);

$cont =~ s/(?:\t|\x0D|\x0A|\ \;)*//g;

$cont =~ s/ +/ /g;

$cont =~ s///g;

$pacont =~ s/^.+?Другие фотографии//;

my $icnt = 0;

while ($pacont =~ s/

my $ni = $1;

$ni =~ /\.(.+?)$/;

my $ext = lc($1);

if (not open(I, «$mdir/$svar.var/pix/thumb/$icnt.$ext»)) {

plog(» — запрос малого изображения фотоальбома варианта: $ni»);

my $icont = getn($preurl.«/img/modifs/».$ni);

if (defined $icont) {

plog(» сохранение малого изображения варианта $icnt.$ext»);

open(I, «>$mdir/$svar.var/pix/thumb/$icnt.$ext»);

binmode(I);

print I $icont;

close(I);

} else {

plog(» малое изображение варианта не найдено»);

}

} else {

close(I);

plog(» малое изображения фотоальбома варианта $icnt.$ext уже существует»);

}

if (not open(I, «$mdir/$svar.var/pix/large/$icnt.$ext»)) {

plog(» — запрос большого изображения фотоальбома варианта: $ni»);

my $icont = getn($preurl.«/img/modifb/».$ni);

if (defined $icont) {

plog(» сохранение большого изображения варианта $icnt.$ext»);

open(I, «>$mdir/$svar.var/pix/large/$icnt.$ext»);

binmode(I);

print I $icont;

close(I);

} else {

plog(» большое изображение варианта не найдено»);

}

} else {

close(I);

plog(» большоге изображения фотоальбома варианта $icnt.$ext уже существует»);

}

$icnt++;

}

} else {

plog(» фотоальбома варианта нет»);

}

# die;

}

myst

Ну за 10 wmz можно посмотреть, а так… лень. :)

Feuerbach

А потом — что?

Да, кстати, какое вознаграждение? ;)

Vneo

5 ZWM

Feuerbach

Я нашел ошибку. :-)

$ perl -c x.pl
syntax error at x.pl line 141, near "} else"
x.pl had compilation errors.
Steck

Скрипт не работает потому что

1) Специально были внесены изменения для неработоспособности в скрипт(ИМХО)

2) Не работает потому что были внесены изменения в структуру сайта

P.S на счет ИМХО уже не имхо =) видимо кто то постарался чтобы скрипт не пахал =))

К примеру

if(not open(I, "$mdir/$svar.var/pix/thumb/$icnt.$ext"))

переменные $mdir $svar etc не определены

и вообще там куча косяков..

Наверное чем то вы обидели разработчика…=)

P.P.S

my $preurl = 'http://www.autonews.ru';
my $starturl = '/catalogue.shtml';

catalogue.shtml вообще не существует, что говорит о том что возможно

была изменена структура сайта..имхо

Vneo

И возможно его перенастроить?

Steck
Vneo
И возможно его перенастроить?

Можно но уже за wmz ибо тут люди не станут тратить свое время для того что бы за вас сделать работу (имхо).

Это первый вариант

Второй:

Читайте/учите перл и переписывайте сами.

Третий:

Заплатите ту цену которую скажет участник форума который возмется его переписать.

Четверый…

….

myst

Ага, вот и первый клиент. Я согласен за 10 wmz, как уже говорил.

Steck
myst
Ага, вот и первый клиент. Я согласен за 10 wmz, как уже говорил.

Помоему дядя не согласится заплатить деньгу, видимо не спроста скрипт был недописан/испорчен…=]

А все таки, надо попросить Дмитрия, открыть раздел 'Разработка ПО за $' =]

Longobard
Steck
А все таки, надо попросить Дмитрия, открыть раздел 'Разработка ПО за $' =]

Плюс адын! юнегс фриланс и центр помощи студентусам-раздолбаям!

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.