2012-01-24 3 views
0

Im новое для мира Ruby и пытаюсь написать программу, которая прочитала список URL-адресов (хранится в urls.txt), а затем попытается получить ответ от этого URL-адреса и вывести статус этого запрос (истинный или ложный) в другой файл.Чтение urls.txt

Как бы я это сделал? Есть ли какие-нибудь библиотеки, такие как mechanize (http://mechanize.rubyforge.org/), которые могут мне помочь?

ответ

2

Предполагая по статусу, вы имеете в виду коды состояния HTTP. Это даст вам значение false для любых кодов сбоев и истинно для любых кодов, основанных на успехе. Я не уверен, что это то, чего ты хочешь.

require 'open-uri' #=> part of the standard library 

#first open the file and read it line by line 

File.open("./urls.txt", "r").each_line do |url| 

#then for each url set a flag to true or false 

    flag = false 
    begin 
     open url 
     flag = true #if we're able to read the url flag is set to true 
    rescue 
     flag = false #otherwise false 
    end 
    puts flag 

end 
+0

спасибо! Я получил ошибку, хотя .. 'block in

': неопределенная локальная переменная или метод' urls' для main: Object (NameError) \t от uptime.rb: 4: in 'foreach ' \t от uptime.rb: 4 : in '
' – Keva161

+0

Извините, я обновил код. Я не правильно скопировал пасту из предыдущей версии. Я также изменил его из File.foreach (filename) {...} в File.open (filename) .each_line {...} из-за каких-то странных проблем, которые у меня были с foreach. – forforf

0

Вам не нужен механизм, все, что вам нужно, это Net::HTTP. Загрузите список URL-адресов, отправьте запрос им и проверьте код ответа.

Смежные вопросы