samlab
Гость
|
|
« : 28-08-2010 14:54 » |
|
#!/usr/bin/perl -w
$| = 1;
use LWP::UserAgent; use LWP::ConnCache;
use threads ('yield', 'stack_size' => 8*4096, 'exit' => 'threads_only', 'stringify');
my $threads = 5;
open(F,"< proxy.txt");
@f=<F>;
chomp(@f);
close(F);
threads->new(\&main) for 1 .. $threads;
$_->join for threads->list;
sub main
{
$i = 1;
while ($i<3) {
$ip = splice(@f, int rand @f, 1);
my $ua = LWP::UserAgent->new; $ua->conn_cache(LWP::ConnCache->new()); $ua->agent('Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)'); $ua->timeout(10); $ua->proxy('http' => "http://$ip"); $ua->default_header('Accept-Encoding' => "gzip, deflate"); $ua->default_header('Accept-Language' => "ru"); $ua->default_header('Referer' => "http://yandex.ru//"); $ua->default_header('Accept' => "*/*"); $ua->default_header('Accept-Charset' => "windows-1251");
$response = $ua->get('http://google.ru/);
sleep (60);
redo;
++$i; } }
Вот какая проблема терзает мой разум. В коде, что приведен выше, парсера, прокси выбираются из списка рандомно. Т.е., если в списке штук 5 прокси, то велика вероятность того, что один и тот же прокси будет использован несколько раз. А хочется вот как, чтобы прокси выбирались из списка по порядку, сначала первый, потом второй, потом третий и в конце скрипт завершает работу. Думаю сделать вот как, присвоить переменной значение 1, потом с каждый разом увеличивать это значение, но реализовать как-то не получается, прошу помочь безголовому
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #1 : 28-08-2010 15:31 » |
|
расскажи про функцию splice
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
samlab
Гость
|
|
« Ответ #2 : 28-08-2010 19:29 » |
|
Скрипты языка Perl используют функцию splice для того, чтобы извлекать элементы из списка, заменяя их элементами другого списка.
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #3 : 28-08-2010 19:38 » |
|
samlab, не.... дорогой, я знаю что делает функция splice А знаешь ли ты?
Ты в нее предаешь параметры, и что-то хочешь получить так вот расскажи, что ты получаешь?
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
samlab
Гость
|
|
« Ответ #4 : 28-08-2010 19:49 » |
|
samlab, не.... дорогой, я знаю что делает функция splice А знаешь ли ты?
Ты в нее предаешь параметры, и что-то хочешь получить так вот расскажи, что ты получаешь?
Получаю указанное число элементов из массива, начиная с величины сдвига, если она указана. Если в вызове не указан параметр сдвига, функция извлекает элементы до самого конца массива. Если в вызове функции не указан список, элементами которого замещаются исходные элементы, то функция не добавляет никаких элементов к первоначальному списку.
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #5 : 28-08-2010 20:06 » |
|
samlab, замечательно!
Получаю указанное число элементов из массива,
Из какого массива?
начиная с величины сдвига Какая величина сдвига?
Получаю указанное число
Сколько?
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
samlab
Гость
|
|
« Ответ #6 : 28-08-2010 20:28 » |
|
samlab, замечательно!
Получаю указанное число элементов из массива,
Из какого массива?
начиная с величины сдвига Какая величина сдвига?
Получаю указанное число
Сколько?
Очевидно, что из массива, который указывается, величина сдвига задается, указанное число, видимо, тоже задается.
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #7 : 28-08-2010 20:56 » |
|
samlab, ты мне на своем примере покажи и расскажи
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
samlab
Гость
|
|
« Ответ #8 : 28-08-2010 21:05 » |
|
Если бы я мог применительно к своему примеру это сделать, я бы не компастировал тут мозги вам...
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #9 : 29-08-2010 08:06 » |
|
samlab, т.е. ты считаешь, что мы должны сделать за тебя твою работу? Я тебе подвел к тому месту, где тебе нужно было всего лишь разобраться, а ты под носом не увидел.
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
samlab
Гость
|
|
« Ответ #10 : 29-08-2010 16:38 » |
|
samlab, т.е. ты считаешь, что мы должны сделать за тебя твою работу? Я тебе подвел к тому месту, где тебе нужно было всего лишь разобраться, а ты под носом не увидел.
ВЫ правы, что то я совсем забываться стал, простите меня пожалуйста, больше такого неслыханного наглежа не повторится!
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #11 : 29-08-2010 16:54 » |
|
samlab, давай так... если это у тебя одноразовая задача, и больше ты ни-ни в перл, то я за такое взял бы денег (но это не мой принцип)
Если будут задачи подобного типа и часто, а судя по тому, что ты установил perl на виндовую машину, это будет часто и много и с каждым разом более масштабно, то давай отвечай на поставленные вопросы и читай документацию и книжки.
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
RXL
|
|
« Ответ #12 : 29-08-2010 17:28 » |
|
Поддерживаю Славу: если уж пользоваться, то надо изучать.
Мне нравится Перл и я с удовольствием отвечаю, в меру своих знаний, на любые вопросы. Но подход "нате, разбирайтесь, чего тут не работает" терпеть ненавижу. Отвечающим должно быть интересно - мы ведь не на работе и ничем не обязаны вопрошающему.
Т.ч., samlab, большая просьба: относится к наводящим и уточняющим вопросам внимательно.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
|