Как обрабатывать NIL с помощью скребка Anemone / Nokogiri?
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
на это бросает исключение.
Я хотел бы избежать, если / Elses повсеместно...
if page.doc.at_css('.details h2').empty?
openers: page.doc.at_css('.details h2').text
end
Есть ли какой-либо более красноречивый способ обработки ошибок, вызванных несоответствующей разметкой? Например, CoffeeScript имеет экзистенциальный оператор person.name?.first()
, Если в HTML есть элемент, отлично создайте объект и вызовите на нем текст. Если нет, двигайтесь дальше и не добавляйте его в хеш.
1 ответ
Вам просто нужно сделать:
anemone.on_pages_like %[/events/detail/.*] do |page|
if not page.nil?
...#your code
end
end