Как правильно загрузить данные HTML со стороннего сайта, используя MVC + AJAX? - PullRequest
0 голосов
/ 18 апреля 2010

Я создаю веб-сайт ASP.NET MVC2, который позволяет пользователям хранить и анализировать данные о товарах, найденных на различных сайтах онлайн-торговли. Когда пользователь заполняет форму для создания или редактирования элемента, у него должна быть кнопка «Импорт данных», которая автоматически заполняет некоторые поля на основе данных со стороннего веб-сайта.

Вопрос: что должна делать эта кнопка под капотом?

Я вижу как минимум 2 возможных решения.
Первый. Выполните импорт на стороне клиента, используя метод AJAX + jQuery load.
Я попробовал это в IE8 и получил всплывающее предупреждение браузера о небезопасных действиях скрипта. Конечно, это совершенно неприемлемо.
Второй. Добавить метод ImportData(string URL) в ItemController класс. Он вызывается через AJAX, выполняет импорт + обработку данных на стороне сервера и возвращает клиенту результат JSON-d.
Я попробовал это и получил исключение сервера (503) Server unavailable при загрузке данных HTML в XMLDocument. Кроме того, у меня есть ощущение, что работа с некорректно сформированным HTML (отсутствующими закрывающими тегами и т. Д.) Будет огромной болью. Любые идеи, как разобрать такие документы HTML?

Ответы [ 2 ]

0 голосов
/ 19 апреля 2010

Используйте http://htmlagilitypack.codeplex.com/ для обработки HTML на сервере. Или регулярные выражения. Или string.IndexOf. Или импортируйте MSHTML через библиотеку Interop и используйте его. Не загружайте HTML в документы XML, если вы не уверены, что это чистый XHTML.

Также попробуйте посмотреть, предоставляют ли сторонние веб-сайты более прямой доступ к данным - XML, REST, веб-сервисам.

0 голосов
/ 18 апреля 2010

К сожалению, вы не можете выполнять межсайтовую загрузку с использованием JavaScript без использования JSONP. Это проблема безопасности. Лучше всего было бы, чтобы AJAX запросил одно из действий вашего контроллера, чтобы он выполнял веб-запрос и возвращал результат клиенту.

Насколько недоступен сервер 503, происходит ли это при каждом запросе? Похоже, вы анализируете информацию из WoW Armory. Они блокируют веб-запросы и забанят вас через некоторое время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...