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具有existentional运算符person.name?.first()
。如果HTML包含元素, great 会在其上创建对象并调用文本。如果没有,请继续前进,不要将其添加到哈希值。
答案 0 :(得分:0)
你只需要做:
anemone.on_pages_like %[/events/detail/.*] do |page|
if not page.nil?
...#your code
end
end