Исходный HTML-код длинный и без отступов, поэтому его очень сложно отладить.
Но я думаю, вам нужно заменить:
doc = doc.xpath('//div').each do |node|
С:
doc = doc.xpath('//body/div').each do |node|
Первый также включал все элементы <div>
, поэтому он включал //body/div
, а затем отдельно включал <div>
внутри //body/div
У меня не было проблем с умлаутовыми символами при использовании puts
, но у меня были проблемы с записью их в файл. В чем ваша проблема? Лучше всего, если вы создадите новый вопрос о переполнении стека для проблемы умляутов.