Всем привет!)
Не пользовался зенкой пару лет, ранее использовал её когда работал в вебстудии для заполнения клиентских интернет магазинов. Делал все в 1 поток, мне этого хватало.
Сейчас появилось куча задач, которые нужно автоматизировать. Хочу углубиться в изучение данной программы. Решил написать простой парсер всех урл сайта. Что бы на выходе получить полный список всех страниц.
Написал простой шаблон, работает без браузера, реализовал вот так:
1. Берем урл из списка url
2. Проверяем этот урл в спике result
3. Если есть в списке result, берем следующий урл, если нет, переходим к следующему шагу
4. Получаем ХТМЛ страницы
5. Получаем все урл из ХТМЛ, записываем в список url, удаляем дубли.
6. Записываем урл обработанной страницы в список result
Сначала шаблон был зациклен, работало в 1 поток, решил ускорить процесс...
Поискал темы по многопоточности на этом форуме, пока понял лишь что нужно синхронизировать списки с файлами, тогда потоки не должны пересекаться.
Но при запуске нескольких потоков, некоторые потоки не могут выполниться, а именно не может выполниться удаление дублей в списке url. В логах вот что пишет:
"Выполнение действия List Коллекция была изменена; невозможно выполнить операцию перечисления"
Почему такое происходит не могу понять...
Не пользовался зенкой пару лет, ранее использовал её когда работал в вебстудии для заполнения клиентских интернет магазинов. Делал все в 1 поток, мне этого хватало.
Сейчас появилось куча задач, которые нужно автоматизировать. Хочу углубиться в изучение данной программы. Решил написать простой парсер всех урл сайта. Что бы на выходе получить полный список всех страниц.
Написал простой шаблон, работает без браузера, реализовал вот так:
1. Берем урл из списка url
2. Проверяем этот урл в спике result
3. Если есть в списке result, берем следующий урл, если нет, переходим к следующему шагу
4. Получаем ХТМЛ страницы
5. Получаем все урл из ХТМЛ, записываем в список url, удаляем дубли.
6. Записываем урл обработанной страницы в список result
Сначала шаблон был зациклен, работало в 1 поток, решил ускорить процесс...
Поискал темы по многопоточности на этом форуме, пока понял лишь что нужно синхронизировать списки с файлами, тогда потоки не должны пересекаться.
Но при запуске нескольких потоков, некоторые потоки не могут выполниться, а именно не может выполниться удаление дублей в списке url. В логах вот что пишет:
"Выполнение действия List Коллекция была изменена; невозможно выполнить операцию перечисления"
Почему такое происходит не могу понять...
Вложения
-
28,1 КБ Просмотры: 142