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 包含该元素,则最好制作该对象并在其上调用文本。如果没有,请继续前进,不要将其添加到哈希中。