2013-10-16 1 views
0

Я хочу, чтобы захватить содержимое веб-страницы, как это:Как узнать, когда функция OpenURI open() Ruby дает ошибку на 404 странице?

open("http://www.ruby-lang.org/") 

Однако, иногда, что страница не существует:

open("http://www.ruby-lang.org/blabla.html") 

Команда open бросает исключение. Я знаю, что могу поймать это исключение, но в моем случае это кажется неуместным. Я знаю, что регулярно будут плохие URL-адреса, потому что посетители и пользователи печатают URL-адреса для извлечения.

Мне не нравится идея использования исключений для этой регулярной ситуации. Есть ли способ узнать, что страница не найдена без исключения исключения?

+1

Единственный регулярный результат 'open' - это ресурс, который открывается. Все остальное является исключительным, и его следует обрабатывать с помощью исключений. – Amadan

+0

Не в определенном порядке, но [HTTPClient] (https://github.com/nahi/httpclient), [RESTClient] (https://github.com/archiloque/rest-client), [Typhoeus] (https: //github.com/typhoeus/typhoeus), [Curb] (https://github.com/taf2/curb) или [HTTParty] (https://github.com/jnunemaker/httparty) все будет проще, чем Net :: HTTP. Механизм может извлекать страницу, но это не причина ее существования. Любой из предыдущих камней лучше подходит для обычного ввода/вывода HTTP. OpenURI - отличный инструмент, и я часто его использую, но это не самая гибкая вещь, поэтому исключения - ваш единственный выбор. –

ответ

0

Вы используете упрощенный метод для чтения файла (open-uri), поэтому вы получаете упрощенный результат для ошибок. Это просто не надежный способ сделать что-то помимо простого успеха/неудачи.

Ознакомьтесь с использованием Net::HTTP (в частности, метода request) или Mechanize или многих других доступных API для таких задач.

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

  • Нет связанных вопросов^_^