Я пытаюсь разобрать http://www.pro-medic.ru/index.php?ht=246&perpage=all с Nokogiri, но, к сожалению, я не могу получить все элементы со страницы.Анализ больших файлов HTML с помощью Nokogiri
Мой простой тест код:
require 'open-uri'
require 'nokogiri'
html = Nokogiri::HTML open('http://www.pro-medic.ru/index.php?ht=246&perpage=all')
p html.css('ul.products-grid-compact li .goods_container').count
Он возвращает только 83 пунктов, но реальный отсчет около 186.
Я думал, что проблема может быть в open
, но мне кажется, что функция читает HTML-страницы правильно.
Есть ли у кого-то такая же проблема?
Большое спасибо Stefan! Я предполагал, что должно быть какое-то ограничение размера страницы. Но 'html.css ('ul.products-grid-compact li .goods_container'). Count' теперь занимает слишком много времени для вычисления. Есть ли способ ускорить его? Или это просто из-за большого размера страницы и не имеет к этому никакого отношения? – Aleksey
Быстрая проверка показывает, что разметка нарушена. Это приводит к дереву узлов с глубиной 571, и такое дерево занимает очень много времени, чтобы пройти. Вы должны дезинфицировать страницу перед ее подачей в Нокигири. Я использовал Safari для сохранения фиксированной версии страницы, и для подсчета элементов потребовалось всего полсекунды (без каких-либо изменений конфигурации). – Stefan
Stefan вы можете сказать мне, как вы проверяете разметку? Есть ли способ сделать это из кода автоматически? – Aleksey