EOF与引入nokogiri
我有很长的循环EOF与引入nokogiri
page = Nokogiri::HTML(open(topic[:url].first)).xpath('//ul[@class = "pages"]//li').first
以下行有时我的Ruby应用程序崩溃提高“到达文件结尾”异常这一行。
我该如何解决这个问题?只是开始,提高,结束块?
是执行论坛备份的脚本,所以重要的是不跳过任何线程。
在此先感谢。
我建议你应该先解决潜在的问题,以免你得到这个错误。
- 相同的URL是否始终导致问题? (将它输出到您的日志文件中。)如果是这样,也许您需要URI encode the URL。
- 它是随机的,因此可能与连接打嗝或服务器问题有关?如果是这样,你应该抢救出具体的错误,然后再进行一次或多次获取关键数据。
其次,你应该知道,该查询的CSS语法简单得多:
page = Nokogiri.HTML(...).at_css('ul.pages li')
除了@ Phrogz的优良建议(特别是约at_css
与简单的表达式),我会拉原始XML [内容]分别:
page = if (content = open(topic[:url].first)).strip.length > 0
Nokogiri::HTML(content).xpath('//ul[@class = "pages"]//li').first
end
我认为你需要一个'.read',不是吗? – Phrogz 2012-07-25 21:19:33
感谢您的回复,但我确实 'next除非topic [:url] .first.page_exists? '// ul [@class =“pages”] // li'' first to do 'page = Nokogiri :: HTML(open(topic [:url] .first))。xpath('// ul [ class =“pages”] // li')。 #page_exists是String的一种方法: 'begin !Nokogiri :: HTML(open(self))。to_s.empty? rescue例外=> e false end' – 2012-07-25 23:00:49
当然可以是服务器的限制(该应用程序与调用#458崩溃),但我不能确定这是事实... – 2012-07-25 23:08:36