Да, WebClient может хорошо работать для этого. Элемент управления WebBrowser также будет работать в зависимости от ваших требований. Если вы собираетесь загрузить документ в HtmlDocument (IE HTML DOM), тогда может быть проще использовать элемент управления веб-браузера.
Объект HtmlDocument, который теперь встроен в .NET, можно использовать для анализа HTML. Он предназначен для использования с элементом управления WebBrowser, но вы также можете использовать реализацию из библиотеки mshtml. Я не использовал пакет HtmlAgilityPack, но слышал, что он может выполнять аналогичную работу.
Объекты HTML DOM обычно обрабатывают и исправляют наиболее уродливый HTML, который вы им бросаете. Помимо предоставления более удобного способа анализа html, document.GetElementsByTag для получения коллекции объектов тегов, например.
Что касается обработки меняющихся требований сайта, то это звучит как хороший кандидат на стратегию . Вы можете загрузить стратегии для каждого сайта, используя рефлексию или что-то в этом роде.
Я работал над системой, которая использует XML для определения общего набора параметров для извлечения текста из HTML-страниц. В основном это определит начальный и конечный элементы для начала и окончания извлечения. Я обнаружил, что этот метод работает достаточно хорошо для небольшой выборки, но он становится довольно громоздким и трудным для настройки, так как коллекция сайтов становится все больше и больше. Поддерживать XML в актуальном состоянии и пытаться поддерживать общий набор XML и кодировать дескриптор любого типа сайта сложно. Но если тип и количество сайтов невелики, это может сработать.
И последнее, что следует упомянуть, это то, что вы можете добавить шаг очистки в ваш подход. Гибкий способ очистки HTML по мере его появления был неоценим для кода, над которым я работал в прошлом. Возможно, реализация типа pipe была бы хорошим подходом, если вы считаете, что домен достаточно сложен, чтобы его оправдать. Но даже просто метод, который запускает некоторые регулярные выражения в HTML перед анализом, будет полезен. Избавление от изображений, замена определенных неправильно используемых тегов более красивым HTML и т. Д. Количество действительно изворотливого HTML, которое существует, продолжает удивлять меня ...