[…] я начал создавать сканеры для каждой веб-страницы, которая становится все труднее завершать и поддерживать […] ясно, что эти сайты имеют свою собственную структуру. […] Эти сайты редко обновляются с точки зрения их веб-структуры […]
Если веб-сайты имеют разную структуру, наличие отдельных пауков имеет смысл и должно облегчить обслуживание в долгосрочной перспективе.
Вы говорите, что завершение новых пауков (я предполагаю, что вы имеете в виду их разработку, а не сканирование или что-то еще) становится трудным, однако, если они похожи на существующего паука, вы можете просто скопировать и вставить наиболее похожий существующий паук, и вносите только необходимые изменения.
Обслуживание должно быть проще всего с отдельными пауками для разных сайтов. Если один сайт меняется, вы можете исправить паука для этого сайта. Если у вас есть паук для нескольких веб-сайтов, и изменяется только один из них, вам нужно убедиться, что ваши изменения для измененного веб-сайта не нарушают остальных веб-сайтов, что может стать кошмаром.
Кроме того, поскольку вы говорите, что структуры веб-сайтов меняются не часто, в целом обслуживание не должно быть таким сложным.
Если вы заметили, что вы повторяете много кода, вы можете извлечь некоторый общий код в промежуточное ПО для пауков, промежуточное ПО для загрузчиков, расширение, загрузчик элементов или даже в базовый класс пауков, совместно используемый двумя или более пользователями. пауки. Но я бы не стал использовать один подкласс Spider для очистки нескольких разных веб-сайтов, которые могут развиваться отдельно.