0
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    

ボンネットの下にノコギリを使ったアネモネでスクレイパーを書いています。

.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 に要素がある場合は、オブジェクト作成してテキストを呼び出します。そうでない場合は、先に進み、ハッシュに追加しないでください。

4

1 に答える 1

0

You just need do:

anemone.on_pages_like %[/events/detail/.*] do |page|   
      if not page.nil?
         ...#your code
      end
end
于 2013-09-02T20:48:49.283 に答える