尝试获取可能存在的 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

问题是有时标题可能会出现在h2h4标签中,所以

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