Можно просто удалять дубли. При условии, конечно, что дубли удаляются с конца списка, а не с началаДля посещенных страниц создайте отдельный список и сверяйтесь по нему - все ли ссылки посетили.
Не имеет смысла, поскольку порождает кучу лишних телодвижений.Можно просто удалять дубли. При условии, конечно, что дубли удаляются с конца списка, а не с начала
т.е. сверятся после парсинга - это не лишние телодвижения, а удалять дубли - лишние. интересно)Не имеет смысла, поскольку порождает кучу лишних телодвижений.
это всё делается одним списком)ИМХО задача обойти все страницы сайта средствами ZP часто схоже на забивание гвоздей микроскопом.
Но вроде алгоритм простой:
Чтобы не запутаться ведем несколько списков:
1- адреса спарсенные с текущей страницы
2- адреса с посещенными (читай пропарсенными) страницами
3- запланированные на парсинг
Дальше все логично и по порядку:
1 Собрали локальные адреса с текущей страницы в первый список.
2 Прошлись по первому списку перебрав адреса: взяли адрес с 1 списка, проверили на наличие его во втором списке, если есть - удаляем берем следующий, если нет - добавляем его в третий список и переходим к новой строке.
3 Закончив перебор строк первого списка, чистим от дублей третий, на случай если мы добавили туда то что там уже было.
4(0) берем (естественно с удалением) новый адрес с третьего списка, переходим по нему и добавляем этот адрес во второй список .
Кстати, очень не хватает в стандартных функциях ZP Операции над списком
такого простого пункта как "найти в списке", приходится через C#
Можете расписать как вы это собираетесь делать одним списком?это всё делается одним списком)
С одним списком норм вариант. Берем из списка по счетчику > парсим в этот же список > удаляем дубли > опять берем по счетчику. Как только взять будет нечего (ошибка - индекс за пределами диапазона) = профит.Можете расписать как вы это собираетесь делать одним списком?
Полагаю не только ТС будет рад изучить пример реализации вашего варианта с одним списком в шаблоне.
именно)С одним списком норм вариант. Берем из списка по счетчику > парсим в этот же список > удаляем дубли > опять берем по счетчику. Как только взять будет нечего (ошибка - индекс за пределами диапазона) = профит.