【问题标题】:How to handle NILs with Anemone / Nokogiri web scraper?如何使用 Anemone / Nokogiri 网络刮刀处理 NIL?
【发布时间】:2013-08-13 20:47:58
【问题描述】:
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/else...

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

有没有更雄辩的方法来处理不一致的标记产生的错误?例如 CoffeeScript 有存在运算符person.name?.first()。如果 HTML 有元素,great 创建对象并在其上调用文本。如果没有,请继续,不要将其添加到哈希中。

【问题讨论】:

  • 你想做什么?忽略他们?
  • 就像任何其他代码一样:检查值是否为 nil 并且不要继续(或做出相应的反应)。

标签: ruby nokogiri scraper anemone


【解决方案1】:

你只需要这样做:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-08
    • 2021-09-07
    • 1970-01-01
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    相关资源
    最近更新 更多