Скачать JS сгенерированный HTML с C # - PullRequest
8 голосов
/ 24 января 2012

Есть веб-сайт отчетов, содержание которого я хочу проанализировать в C #. Я попытался загрузить HTML с помощью WebClient, но тогда я не получил полный исходный код, поскольку большая часть его генерируется с помощью js при посещении веб-сайта.

Я пытался использовать WebBrowser, но не смог заставить его работать в консольном приложении, даже после использования Application.Run () и SetApartmentState (ApartmentState.STA).

Есть ли другой способ доступа к этому сгенерированному html? Я также заглянул в mshtml, но не смог понять.

Спасибо

Ответы [ 4 ]

3 голосов
/ 24 января 2012

Javascript выполняется браузером.Если ваше консольное приложение получает JS, значит, оно работает должным образом, и вам действительно нужно, чтобы консольное приложение выполняло загруженный код JS.

3 голосов
/ 24 января 2012

Вы можете использовать безголовый браузер - XBrowser май сервер.

Если нет, попробуйте HtmlUnit, как описано в этом сообщении в блоге .

0 голосов
/ 24 января 2012

Лучше всего отказаться от маршрута консольного приложения и создать приложение Windows Forms. В этом случае WebBrowser будет работать без какой-либо работы.

0 голосов
/ 24 января 2012

Просто комментарий здесь.Не должно быть никакой разницы между выполнением HTTP-запроса с некоторым кодом C # и запросом, сгенерированным браузером.Если целевая веб-страница запутывается и не генерирует правильную разметку, потому что она не может сделать заголовки или хвосты из типа браузера, который она считает обслуживающим, тогда, возможно, все, что вам нужно сделать, это установить пользователяАгент, например, так:

((HttpWebRequest)myWebClientRequest).UserAgent = "<a valid user agent>";

Например, мой текущий пользовательский агент:

Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1

Может быть, как только вы сделаете это, страница будет работать правильно.Здесь могут быть и другие факторы, такие как реферер и т. Д., Но сначала я попробую и посмотрю, работает ли он.

...