Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 打开uri/Nokogiri重定向问题_Ruby_Open Uri - Fatal编程技术网

Ruby 打开uri/Nokogiri重定向问题

Ruby 打开uri/Nokogiri重定向问题,ruby,open-uri,Ruby,Open Uri,我使用Nokogiri来抓取一个工作正常的网页,除非该网页有一个重定向循环 所以当我抓取这个网站时: 我得到这个错误 /home/balint/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/open-uri.rb:224:in open_loop': redirection forbidden: https://www.cardcomplete.com/besuchen-isie-uns-auf-facebook/ -> http://www.facebook

我使用Nokogiri来抓取一个工作正常的网页,除非该网页有一个重定向循环

所以当我抓取这个网站时:

我得到这个错误

/home/balint/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/open-uri.rb:224:in open_loop': redirection forbidden: https://www.cardcomplete.com/besuchen-isie-uns-auf-facebook/ -> http://www.facebook.com/cardcomplete (RuntimeError)
但当我尝试刮取此网站时,我得到了相同的错误,但现在它被重定向到facebook页面的https版本:

/home/balint/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/open-uri.rb:224:in `open_loop': redirection forbidden: http://www.facebook.com/cardcomplete -> https://www.facebook.com/cardcomplete (RuntimeError)
当然,删除facebook页面的https版本是可行的

我安装的gem适用于facebook http->https重定向,但不适用于第一个链接:

doc = Nokogiri::HTML(open('https://www.cardcomplete.com/besuchen-isie-uns-auf-facebook/', :allow_redirections => :safe))

怎么解决这个问题?

我是瞎子。我应该使用
:allow_redirections=>:all
而不是
:allow_redirections=>:safe
。Nokogiri对阅读页面没有连接或影响。它只从OpenURI或任何您用来读取页面或文件的IO中检索数据。换句话说,Nokogiri不是问题,问题在于你如何读取文件。最初,很多库都会允许从HTTP HTTPs重定向,但这被认为是一种令人困惑的行为,因此不鼓励这样做,这就是为什么默认设置为
:safe
,我们必须显式启用
:all
。要使用此选项:allow_redirection=>:all,请通过安装此gem添加路径