Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > Срочно! Надо скрипт заходил на следующую страницу


Автор: irinazanuda 26.2.2011, 20:06
Как сделать так, чтобы скрипт заходил на страницу, совершал определённый цикл, а потом заходил на страницу со следующим порядковым номером? Интуитивно понимаю, что как-то так, но мне бы знать, как заставить здесь Руби видеть var как переменную, а не как слово:
login
var=0
while 1
$a.get "http://название.ru/users/var/profile/" do |page|
post_message page, "sbj", "msg"
var=var+1
end
end

Автор: c0va23 26.2.2011, 22:33
"http://название.ru/users/#{var}/profile/" так.

Автор: irinazanuda 26.2.2011, 22:56
Спасибо. сейчас посмотрю будет работать или нет. Спасибо, что ответили.

Автор: irinazanuda 26.2.2011, 23:27
пашет, спасибо! Только вот теперь когда он попадает на страницу, которой не существует, - вылетает. А надо, чтобы просто увеличивал var на 1 и пробовал дальше.  

Автор: WarHog 26.2.2011, 23:46
irinazanuda, проще всего воспользоваться begin - rescue

Автор: irinazanuda 26.2.2011, 23:54
А так как сова23 мне нравится - заработал, только это, может напишите такую строчку как сова 23

Автор: c0va23 27.2.2011, 00:00
Код

$a.get "http://название.ru/users/var/profile/" do |page|
  begin
    post_message page, "sbj", "msg" # << Если ошибка бросается сдесь
  rescue => e
    # Тут можно обработать ошибки
  end
  var=var+1
end

Автор: irinazanuda 27.2.2011, 00:45
while 1
begin
$a.get "http://название.ru/users/var/profile/" do |page| #ошибка вылезает здесь
rescue => Errno::ECONNREFUSED #это пробовалось и без ECONNREFUSED, и с е вместо ECONNREFUSED
var=var+1
end
post_message page, "sbj", "msg" 
var=var+1
end

Теперь он даже не запускается: говорит, что ему rescue - unexpected. 

Автор: c0va23 27.2.2011, 01:00
Цитата(irinazanuda @ 27.2.2011,  00:45)
while 1
begin
$a.get "http://название.ru/users/var/profile/" do |page| #ошибка вылезает здесь
rescue => Errno::ECONNREFUSED #это пробовалось и без ECONNREFUSED, и с е вместо ECONNREFUSED
var=var+1
end
post_message page, "sbj", "msg" 
var=var+1
end

Теперь он даже не запускается: говорит, что ему rescue - unexpected. Я на грани уже.

Ты пишешь rescue не в том месте.
И нужно писать  так:
Код

while 1
  begin
    $a.get "http://название.ru/users/var/profile/" do |page|
      post_message page, "sbj", "msg"
    end
  rescue => e
  end
  var=var+1
end
.

Автор: WarHog 27.2.2011, 01:01
irinazanuda, у тебя получается тот end, что относится к do, смешался с тем end'ом, что относится к rescue, т.е. rescue получается внутри пары do - end, и для него нет соответсвующих begin и end

Автор: irinazanuda 27.2.2011, 01:14
Буду пробовать ещё как Вы сказали.

Автор: irinazanuda 27.2.2011, 02:22
Всё КЛАССНО!  
теперь stdout сохраняет в файл, но не выводит на экран. Неудобно.

Автор: irinazanuda 27.2.2011, 13:12
надо ещё, чтобы он считывал из файла числа, потом сравнивал их с var, и в случае совпадения - пропускал страницу с этим var и просто увеличивал на 1. Такой своеобразный игнор-лист. Ну, можно не из файла, можно и прям в код забить.  теперь stdout сохраняет в файл, но не выводит на экран. 
Цитата(c0va23 @  27.2.2011,  01:00 Найти цитируемый пост)
Без подсветки
while 1
  begin
    $a.get "http://название.ru/users/var/profile/" do |page|
      post_message page, "sbj", "msg"
    end
  rescue => e
  end
  var=var+1
end


Автор: irinazanuda 27.2.2011, 13:31
 теперь всё ок с обработкой ошибки, только вот после этого

rescue => e
puts "page http://www.название.ru/users/#{i}/profile doesn't exist"
ensure
i=i+1
end

он мне всегда возвращает сообщение о том, что page doesn't exist, даже когда исключения нет. В принципе, на работу программы не влияет, но это несоответствие 

Автор: WarHog 27.2.2011, 13:56
irinazanuda, блок внутри rescue отрабатывает только в случае исключения. ты уверена, что у тебя там все ок ("даже когда исключения нет")? попробуй убрать rescue и убедиться в этом

Автор: irinazanuda 27.2.2011, 14:37
Цитата(WarHog @  27.2.2011,  13:56 Найти цитируемый пост)
блок внутри rescue отрабатывает только в случае исключения. ты уверена, что у тебя там все ок 

попробовала. Да ок там все, когда он попадает на страницу, которая есть - выдаёт сразу два сообщения: о том, что всё ок и о том, что страницы нет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)