我正在 Rails 3 上开发并使用 Nokogiri。我的控制器解析多个站点并在我的视图上显示结果。问题是,当这些站点之一不可用时(例如 403 或 503 错误),所有 webapp 都会因为该站点而崩溃。
我的问题:有没有办法在 Nokogiri 打开之前检查已解析页面的可用性,或者更好的是,通过/忽略不可用性?
谢谢
我的控制器的一部分:
Docvariable1 = Nokogiri::HTML(open("http://www.site1.com/"))
@variable1 = {}
docvariable1.xpath('//div[6]/h3/a').each do |link|
@variable1[link.text.strip] = link['href']
End
Docvariable2 = Nokogiri::HTML(open("http://www.site2.com/"))
@variable2 = {}
docvariable2.xpath('//div[6]/h3/a').each do |link|
@variable2[link.text.strip] = link['href']
End
Docvariable3 = Nokogiri::HTML(open("http://www.site3.com/"))
@variable3 = {}
docvariable3.xpath('//div[6]/h3/a').each do |link|
@variable3[link.text.strip] = link['href']
end
我的部分观点
<% if @variable1 %>
<% @variable1.each do |key, value| %>
<li ><a href=" <%= "#{value}" %>" target='_blank' ><%= "#{key}" %></a>
<% end %>
<% end %>
<% if @variable2 %>
<% @variable1.each do |key, value| %>
<li ><a href=" <%= "#{value}" %>" target='_blank' ><%= "#{key}" %></a>
<% end %>
<% end %>
<% if @variable3 %>
<% @variable1.each do |key, value| %>
<li ><a href=" <%= "#{value}" %>" target='_blank' ><%= "#{key}" %></a>
<% end %>
<% end %>
PS:我知道代码不是很“完美”,因为它与“DRY”原则相反,仍在学习;)