我在一个长循环中有以下行
page = Nokogiri::HTML(open(topic[:url].first)).xpath('//ul[@class = "pages"]//li').first
有时,我的 Ruby 应用程序崩溃,并在这一行中引发“到达文件末尾”异常。
我该如何解决这个问题?只是一个开始;提高;结束块?
是一个执行论坛备份的脚本,所以不跳过任何线程很重要。
提前致谢。
除了@Phrogz 的优秀建议(特别是关于at_css
更简单的表达式),我会单独提取原始 xml [内容]:
page = if (content = open(topic[:url].first)).strip.length > 0
Nokogiri::HTML(content).xpath('//ul[@class = "pages"]//li').first
end
我建议您首先解决根本问题,以免出现此错误。
retry
一次或多次以获取关键数据。其次,您应该知道该查询的 CSS 语法要简单得多:
page = Nokogiri.HTML(...).at_css('ul.pages li')