如何使用Anemone / Nokogiri网络刮刀处理NIL?

时间:2013-08-13 20:47:59

标签: ruby nokogiri scraper anemone

def scrape!(url)   
  Anemone.crawl(url) do |anemone|   
     anemone.on_pages_like %[/events/detail/.*] do |page|   
      show = {   
        headliner: page.doc.at_css('h1.summary').text,   
        openers: page.doc.at_css('.details h2').text
       }   
      puts show   
    end   
  end   
end    

在Anemone中编写一个刮刀,它使用了Nokogiri ......

有时候,选择器.details h2'不会返回任何内容,因为它不在HTML中,并且在其上调用text会引发异常。

我想避免在各地等待/等待......

   if page.doc.at_css('.details h2').empty?   
      openers: page.doc.at_css('.details h2').text
   end

是否还有更有说服力的方法来处理由不一致标记产生的错误?例如,CoffeeScript具有existentional运算符person.name?.first()。如果HTML包含元素, great 会在其上创建对象并调用文本。如果没有,请继续前进,不要将其添加到哈希值。

1 个答案:

答案 0 :(得分:0)

你只需要做:

anemone.on_pages_like %[/events/detail/.*] do |page|   
      if not page.nil?
         ...#your code
      end
end