Ruby 打开uri/Nokogiri重定向问题
我使用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
/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添加路径