我正在使用Nokogiri解析一些HTML:
doc = Nokogiri::HTML(open(url))
doc.css('.blockGroup--posts .block')[2..30].each do |article|
title = article.at('h2').text # or h3, h4
image = article.at('.section-content img')['src'] # may not exist
问题是有时标题可能会显示在h2
或h4
标记中,所以
title = article.at('h2').text
会报告
undefined method `text' for nil:NilClass
image
也是如此。有时文章中没有图像,它也会报告错误。
如何让Nokogiri获得这些元素并继续运行?或者,如果这些元素不存在,我可以使用回调吗?
答案 0 :(得分:1)
很简单,您可以像try
一样:
title = article.at('h2').try(:text) || "your any alternative methods can be called here"
图像也可以相同。
try
将返回nil或value,它将帮助您避免异常提升。
答案 1 :(得分:1)
你可以这样做:
title = article.at('h2,h3,h4').text