2014-09-18 4 views
2

Я хочу программно проанализировать страницы сайта и, очевидно, мне нужен полный HTML-код. Однако сайт может загружать только некоторую главную страницу через прямой URL-адрес, а после загрузки главной страницы он получает свой контент через AJAX.Как получить полностью загруженный код HTML-страницы

Как загрузить страницу «как в браузере», чтобы она полностью загрузилась со всеми ее скриптами, выполняющими свою работу?

Например, если я использую класс WebBrowser, чтобы действительно открыть страницу «как в браузере», ее свойство DocumentText (которое должно представлять содержимое DOM) возвращает только исходную страницу без фактического содержимого, загружаемого через AJAX или подобное (проверено на google.com). Это происходит и в браузерах, и для просмотра фактического HTML мне нужно использовать инструменты разработчика.

ОБНОВЛЕНО: ответ оказывается здесь, благодаря Владимир Шмидт how to dynamically generate HTML code using .NET's WebBrowser or mshtml.HTMLDocument?

DocumentText не обновляет его содержимое после «корня» DOM был загружен, но свойство документа делает.

ответ

0

Ты слышал о http://webkitdotnet.sourceforge.net/? Кроме того .net имеет компонент WebBrowser, который может использоваться для

+0

Да, это, я обновил свой вопрос только после того, как Ваш комментарий, пожалуйста, посмотрите на него. – yaapelsinko

+0

whould DocumentCompleted (WebBrowserDocumentCompletedEventHandler) событие в WebBrowser будет достаточно для точки, когда ВСЕ сайт загружается даже через ajax? –

+0

Hummm, я пойду посмотрю ... – yaapelsinko

0

Как я могу загрузить страницу «как в браузере» ...?

Единственный верный способ сделать это на самом деле загрузки страницы в браузере. Это можно автоматизировать с помощью инструмента Selenium/WebDriver.

+0

Ну, есть класс WebBrowser, чтобы открыть его в браузере, я обновил свой вопрос об этом. Все еще не вижу «элегантного» решения ... – yaapelsinko

0

Из названия кажется, что вы хотите, чтобы завершенный HTML на вашей странице после того, как AJAX и javascript получили или сгенерировали контент. Если это так, то отладчик браузеров (F12) будет иметь это. В Chrome просмотрите вкладку «Элементы».

+0

Да точно, но мне нужно, чтобы это было загружено программным способом для его анализа. Любая возможность получить завершенный код из экземпляра WebBrowser? – yaapelsinko

0

Есть несколько решений.

Главная логика:

  1. Запрос Page
  2. Wait сезам документ полностью загружен (ReadyState = Завершена)
  3. Получить содержание документа

Я предполагаю, что один простые из них является используйте WebControl, где вы переходите к своему URL-адресу и дождитесь готовности или полного состояния элементов управления. После этого вы можете начать синтаксический анализ.

Здесь на SO решение: htmlagilitypack and dynamic content issue

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