2016-02-29 2 views
1

Мне нужно получить код HTML для страницы, которая использует AngularJS для обработки некоторой информации и создания графика. Я мог бы легко получить html-код, используя WebRequest, в качестве примера ниже, но содержимое (графическое изображение), генерируемое AngularJS, не входит в код страницы.Как получить cina page html, сгенерированный с помощью AngularJS

WebRequest request = WebRequest.Create("http://localhost:36789/minhaapp#/index"); 
WebResponse response = request.GetResponse(); 
Stream data = response.GetResponseStream(); 
string html = String.Empty; 
using (StreamReader sr = new StreamReader(data)) 
{ 
    html = sr.ReadToEnd(); 
} 

Неужели кто-нибудь когда-либо испытывал это?

Заранее благодарю вас за поддержку.

+1

Поскольку HTML, CSS и Js должны интерпретироваться как товар в веб-браузере ... –

+1

Предлагаю вам загрузить данные из JSON/XML, если это возможно. – Meeh

+1

Используйте 'System.Windows.Forms.WebBrowser', пусть он загружает сайт, а затем, наконец, извлекает html из веб-браузера. – cramopy

ответ

0

В конце вашего метода Page_Load, вызовите этот метод getHTMLContent():

public string getHTMLContent() 
{ 
    StringBuilder sb = new StringBuilder(); 
    StringWriter tw = new StringWriter(sb); 
    HtmlTextWriter hw = new HtmlTextWriter(tw); 
    panel.RenderControl(hw); 
    String html = sb.ToString(); 
    return html; 
} 

Вся страница, содержащаяся в asp:Panel под названием panel. Способ, которым это работает, - это метод RenderControl(), который вы можете прочитать немного о here. Проще говоря, он получает весь контент в тегах asp:Panel (вся страница) и после использования после завершения события Page_Load он получит весь необработанный HTML-код для этой страницы.

0

Существует библиотека под названием PhantomJS, которая сначала отображает js с сайта, а затем вы можете получить источник после его рендеринга. Но очевидно, что это также замедлит процесс, если вы занимаетесь множеством сайтов.