尝试获取可能存在的 HTML 标签
Try to get a possibly existing HTML tag
我正在使用 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 获取这些元素并继续 运行?或者,如果这些元素不存在,我可以使用回调吗?
很简单,你总是可以这样try
:
title = article.at('h2').try(:text) || "your any alternative methods can be called here"
图像也可以相同。
try
将 return nil 或值,这将帮助您避免引发异常。
你可以这样做:
title = article.at('h2,h3,h4').text
我正在使用 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 获取这些元素并继续 运行?或者,如果这些元素不存在,我可以使用回调吗?
很简单,你总是可以这样try
:
title = article.at('h2').try(:text) || "your any alternative methods can be called here"
图像也可以相同。
try
将 return nil 或值,这将帮助您避免引发异常。
你可以这样做:
title = article.at('h2,h3,h4').text