2015-10-14 1 views
-1

Я пытаюсь собрать ряд пользовательских 404 страниц.Ruby - Получение содержимого страницы, даже если оно не существует

require 'uri' 

def open(url) 
page_content = Net::HTTP.get(URI.parse(url)) 
puts page_content.content 
end 

open('http://somesite.com/1ygjah1761') 

следующий код завершает работу программы с ошибкой. Как я могу получить содержимое страницы с сайта, независимо от того, является ли оно 404 или нет.

ответ

1

Вы должны спасти от ошибки

def open(url) 
    require 'net/http' 
    page_content = "" 
    begin 
    page_content = Net::HTTP.get(URI.parse(url))   
    puts page_content 
    rescue Net::HTTPNotFound   
    puts "THIS IS 404" + page_content 
    end 
end 

Вы можете найти более подробную информацию о чем-то вроде этого здесь: http://tammersaleh.com/posts/rescuing-net-http-exceptions/

+0

Это ничего не возвращает – user3610137

+0

оно работает на ruby-2.1.0. Я добавил явное требование, но вы, вероятно, не нуждаетесь в этом – jjk

+0

Спасибо за ответ! Есть ли способ проанализировать эту строку за строкой, чтобы искать данные? чтобы проверить, включает ли страница («Вы нарушили ее!») – user3610137

0

Net::HTTP.get возвращает содержимое страницы непосредственно в виде строки, поэтому нет необходимости вызывать .content по результатам:

page_content = Net::HTTP.get(URI.parse(url)) 
puts page_content 
+0

Я считаю, что все еще генерирует ошибку, если у пользователя есть функция 404 .. Как мне переопределить что? – user3610137

+0

Я не получаю ошибок при обнаружении 404 - возможно, это связано с версией ruby ​​- какую версию вы используете? – infused

+0

"ruby 2.1.5p273" – user3610137

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