1

我正在尝试阅读斯坦福 ecorner XML:

open("http://ecorner.stanford.edu/RecentlyAdded.xml")

但我遇到以下错误消息:

OpenURI::HTTPError: 500 Internal Server Error
    from /usr/local/lib/ruby/1.8/open-uri.rb:277:in `open_http'
    from /usr/local/lib/ruby/1.8/open-uri.rb:616:in `buffer_open'
    from /usr/local/lib/ruby/1.8/open-uri.rb:164:in `open_loop'
    from /usr/local/lib/ruby/1.8/open-uri.rb:162:in `catch'
    from /usr/local/lib/ruby/1.8/open-uri.rb:162:in `open_loop'
    from /usr/local/lib/ruby/1.8/open-uri.rb:132:in `open_uri'
    from /usr/local/lib/ruby/1.8/open-uri.rb:518:in `open'
    from /usr/local/lib/ruby/1.8/open-uri.rb:30:in `open'
    from (irb):65
    from :0

我相信,但我可能是错的,这是因为我需要登录才能使用提要。

我可以使用任何解决方法吗?

4

2 回答 2

2

如果没有登录,您应该得到一个 HTTP 响应代码401 Unauthorized和 not 500。我试图在浏览器中打开该站点,该站点有效。原来他们的网络服务器不喜欢缺少用户代理,所以如果你添加它open-uri

>> require 'open-uri' 
#=> true
>> open("http://ecorner.stanford.edu/RecentlyAdded.xml", 'User-Agent' => 'ruby') 
#=> #<File:/var/folders/H9/H9qnar1yGZqBrWFGuTE0RU+++TI/-Tmp-/open-uri20110505-25566-zsc3pd-0>
于 2011-05-05T08:25:58.847 回答
0

这对我有用:

require 'open-uri'
require 'nokogiri'

doc = Nokogiri::XML(open('http://ecorner.stanford.edu/RecentlyAdded.xml'))
puts doc.search('title').map{ |n| n.text }

>> Recently Added STVP Entrepreneurship Corner Materials
>> STVP Entrepreneurship Corner
>> Podcast: Developing Products that Save Lives - Richard Scheller (Genentech)
>> Podcast: How to Build Instant Connections - Ori Brafman (Author)
>> Podcast: A New Vision for Capital Markets - Barry Silbert (SecondMarket)
>> Podcast: Effective Models for Sustainable Growth - Jennifer Morris (Conservation International)

请注意,您遇到了 500 范围的错误。这意味着他们的服务器正在运行,但功能足以承认问题。如果您遇到 400 范围的错误,他们会出于某种原因拒绝您访问内容,所以我怀疑问题出在身份验证或您身边的任何事情上。

于 2011-05-05T08:37:30.777 回答