Вопрос от новичка! Почему элементов больше чем нужно?
Потому что узлы в ДОМ необязательно элементы. В вашем случае, там есть текстовые узлы (строки с пробельными символами). 
У каждого узла есть nodeType. У элементов он равен 1 (document.ELEMENT_NODE). Вам нужно отфильтровать все узлы на nodeType === document.ELEMENT_NODE
childNodes включает текстовые ноды(переводы строк итд...), используйте children для получения только элементов. А для количества спиногрызов можно использовать и childElementCount.