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有存在性操作符person.name?.first()。如果HTML有元素,那么很好地创建对象并调用它上的文本。如果不是,继续前进,不要将其添加到散列中。
发布于 2013-09-02 20:48:49
你只需要做:
anemone.on_pages_like %[/events/detail/.*] do |page|
if not page.nil?
...#your code
end
endhttps://stackoverflow.com/questions/18218944
复制相似问题