【发布时间】: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