Подтвердить что ты не робот

Запрет перенаправления Ruby open-uri запрещен

У меня есть этот простой html-парсер (для учебных целей), над которым я работал.

require 'open-uri'
puts "Enter URL to parse HTML: "
url = gets.chomp
puts "Enter tag to parse from: "
tag = gets.chomp
response = open(url).read
title1 = response.index(tag)
title2 = response.index(tag.insert(1,'/')) -1
result = response[(title1 + tag.length - 1)..title2]
print result 

и когда я ввожу http://twitter.com, я получаю это сообщение об ошибке:

ERROR: `open_loop': redirection forbidden: http://twitter.com -> https://twitter.com/ (RuntimeError)
from /usr/local/rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/open-uri.rb:149:in `open_uri'
from /usr/local/rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/open-uri.rb:704:in `open'
from /usr/local/rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/open-uri.rb:34:in `open'
from /home/ubuntu/workspace/htmlparse.rb:6:in `<main>' 

Посоветуйте или помогите? Я новичок в Ruby, и мне известно о других модулях синтаксического анализа html, но я делаю это, чтобы изучить основы Ruby. Спасибо.

4b9b3361

Ответ 1

Посмотрите на open_uri_redirections gem.

Он исправляет Ruby OpenURI, чтобы разрешить перенаправления с HTTP на HTTPS или наоборот.

Ответ 2

Вы также можете поймать исключение, а затем повторите попытку с помощью URL-адреса https.

url = "http://classic.ona.io/api/v1/files/3538545?filename=gringgo/attachments/1485229166168.jpg"

uri = URI.parse(url)
tries = 3

begin
  uri.open(redirect: false)
rescue OpenURI::HTTPRedirect => redirect
  uri = redirect.uri # assigned from the "Location" response header
  retry if (tries -= 1) > 0
  raise
end

Источник: https://twin.github.io/improving-open-uri/