2010-06-01 2 views
3

Я часто бываю на сайте, чтобы посмотреть на вещи. Я подумал про себя: «Подожди, я могу запрограммировать. Почему я иду на этот сайт вручную, когда могу написать часть программного обеспечения, которая делает это для меня?».Получить html, который создается через AJAX в webclient

И так я начал. Я использую C#, поэтому я нашел WebClient и Uri.

Мне удалось получить исходный код для сайта, но возникла проблема, что конкретные данные, которые я ищу, генерируются через AJAX после загрузки исходного кода.

Так что это моя проблема. Как я могу получить этот код, если его нужно сначала запросить через вызов AJAX?

ответ

2

Общий подход заключается в следующем:

  1. с помощью инструмента, как Fiddler, узнать, какие HTTP запросы делаются в браузере для того, чтобы выбрать данные, что вы ищете.
  2. использовать WebClient для получения требуемых HTTP-запросов.

Посмотрите на мой ответ this question для получения дополнительной информации об очистке экрана HTML для получения более подробной информации и о том, как работать с различными проблемами, с которыми вы можете столкнуться.

Для # 1 выше, вот как использовать скрипача, чтобы понять, как конкретный запрос делается:

Во-первых, найти запрос, вы заботитесь о (по запросу, который содержит данные, которые вы хотите в своем ответе). Вы можете сделать это, проверив каждый запрос, дважды щелкнув его на левой панели в скрипачке и заглянув в вкладку «текстовое поле» в нижней правой панели. Вы также можете использовать CTRL + F для поиска контента по нескольким запросам, но некоторые запросы сжимаются, поэтому вы хотите, чтобы кнопка «autodecode» была выбрана на панели инструментов, прежде чем делать ваши запросы, если вы хотите быть уверенными, поиск по всем им.

Как только вы нашли требуемый запрос, дважды щелкните его в Fiddler и выберите вкладку «заголовки» в верхней правой панели. Это отправленные заголовки. Если ваш клиент отправляет именно эти заголовки на сервер, вы должны вернуть те же данные. Но обычно не все заголовки нужны, поэтому вам нужно выяснить, какие из них нужны. Вы делаете это, используя вкладку «Конструктор запросов» Fiddler в верхней правой панели. Выберите эту вкладку и перетащите запрос данных с левой панели на конструктор запросов. Затем отправьте запрос, чтобы подтвердить, что он возвращает правильные результаты. Затем начните удалять заголовки, по одному заголовку за раз, пока запрос не перестанет работать - вы знаете, что этот заголовок был необходим. Попытайтесь удалить каждый заголовок, пока не найдете нужные.

Затем вам нужно написать код для создания правильного заголовка. Не беспокойтесь о заголовке Host:, который автоматически создается для вас. Для заголовка Cookie: вам необходимо сгенерировать его с помощью класса CookieContainer. Для других заголовков (например, UserAgent :, Accept :, и т. Д. Вы можете их скопировать и добавить в свой запрос как есть.

+0

Я действительно не понимаю. Fiddler показывает только 1 запрос, то есть запрос POST я не вижу, как запрашиваются данные, и нет заголовков? Как это выглядит? – KdgDev

+0

Я предполагаю, что POST, о котором вы говорите, фактически содержит данные, которые вы пытаетесь чтобы получить программный доступ. Если это так, я расширил свой ответ, чтобы включить более подробную информацию о том, как использовать скрипач, чтобы найти правильный запрос, понять, какие заголовки отправляются, и найти, какие заголовки требуются. Это информация, которую вы искали ? –

+0

Хорошо, я получил то, что мне нужно. Единственное, что до сих пор остается загадкой, - вещь CookieContainer. Я просмотрел его, но большинство учебных пособий были посвящены ASP.NET. Я использую небольшое приложение C# для этого, а не ASP.NET. – KdgDev

 Смежные вопросы

  • Нет связанных вопросов^_^