Я буду собирать приложение для автоматизации внешнего веб-сайта / приложения. В некоторых случаях мне нужно будет перемещаться по сайту как пользователь (некоторые ссылки, по которым мне нужно перейти, не могут быть предсказаны и должны быть проанализированы из ответа)
Я уже использую Html Agility Pack и знаю о Tidy, если это необходимо.
Есть ли какие-либо другие технологии, о которых я должен знать?
Существуют ли рекомендуемые шаблоны для быстрой настройки в случае изменения внешнего веб-приложения? Я предполагаю инкапсулировать проверку ответов как некоторый тип стратегии или подобный шаблон, который может быть легко разделен / подключен по мере необходимости, но любые конкретные предложения были бы хорошими.
c#
.net
html
web-scraping
jlnorsworthy
источник
источник
Ответы:
Если вы хотите автоматизировать навигацию по внешнему веб-сайту, как это делает пользователь, Watin идеально подходит для этого. Он будет управлять веб-браузером через объектную модель и имеет широкий спектр возможностей синтаксического анализа, построенных на DOM (а также не-DOM-способности, которые вы можете найти в браузере, включая скрипты).
Вот ссылка:
Watin.org
источник
Если вам нужна возможность быстро вносить изменения для отслеживания изменений во внешнем веб-приложении, я бы посмотрел на сценарии. Если вы предпочитаете C #, посмотрите на компиляцию кода на лету. Если вы используете базу данных, код скрипта может храниться там, иначе обычные текстовые файлы тоже будут работать.
Что касается паттернов GoF, стратегия - это выбор учебника.
Другой «шаблон», который следует учитывать, особенно если учесть, что вы проверяли ответы, используя их для выбора следующего действия, - это конечный автомат . Например, состояния для клиента веб-почты могут быть «не вошли», «на входящие», «чтение сообщения», «редактирование ответа» и т. Д. Вы должны выполнить некоторые действия в зависимости от состояния, затем на основе В ответ выберите следующее состояние.
источник
Шаблон действительно должен исходить из проблемы, но вот несколько вариантов:
Если вас в основном интересует текущая стоимость разработки / раздражение: шаблон стратегии (уже упоминалось) - используйте его для реализации интерфейсов уровня компонента и используйте методологию динамического связывания для разрешения конкретных стратегий (реализаций). Контейнер IOC (мне нравится Autofac в эти дни) будет работать хорошо.
Если вам нужно поддержать вышеупомянутое плюс, необходимо масштабировать: Map Reduce (кто-нибудь знает хороший m + r fx для .net?).
источник
В зависимости от того, насколько сильно изменяется веб-страница, это может быть сложно. Вы можете хранить список стандартных регулярных выражений в БД, а затем, когда одно из них больше не работает, вы можете перебирать базовый набор с другими, пока не нажмете одно. Тогда вы захотите пометить это для будущего использования.
источник